簡體   English   中英

歸並排序 c++

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM