[英]Merge sort in c++
在競爭性編碼中,我遇到了編碼合並排序的問題,我知道如何使用三個 arguments 來編碼合並排序,即
merge_sort(int arr[],int left,int right)
{
\\rest of code
}
但問題是
merge_sort(int arr[],int size)
{
\\rest of code
}
如何對 2 arguments 進行歸並排序?
你可以打電話給這個 function
merge_sort(int arr[],int size)
{
\\rest of code
}
來自這個 function
merge_sort(int arr[],int left,int right)
{
\\rest of code
}
像
merge_sort( arr + left, right - left + 1 );
在這種情況下,相對於第二個 function,參數left
將等於0
,而參數 right 將等於right - left + 1
,因為將指針移動到數組的所需部分。
因此,第一個 function 可以通過使用適當的 arguments 和指針算法來替換第二個 function。
或者可以從第一個 function 調用第二個 function
merge_sort( arr, 0, size - 1 );
你可以這樣做:
merge_sort(int arr[],int size)
{
merge_sort(arr, 0,size-1) // merge_sort(int arr[],int left,int right)
}
現在你從第 2 個參數 1 調用第 3 個參數 function。
int arr[]
看起來像一個數組,但它不是。 請記住,當傳遞給函數時,arrays 會衰減為指向第一個元素的指針。 第一種方法使用:
-------------------------------------
| | |
arr(pointer) left(index) right(index)
而第二個可以做同樣的事情:
-------------------------------------
|<-- size -->|
arr
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.