資料結構與演算法 C 實現歸併排序

2021-07-11 15:40:49 字數 596 閱讀 1325

歸併排序

思想:將兩個有序陣列歸併成乙個更大的陣列。

優點:保證任意長度為

n的陣列,排序需要所需時間與nlogn成正比。

缺點:所需的額外空間與n成正比

#includeusing namespace std;

int temp[100];

void merge(int* a, int from, int mid, int to)

}void mergesort(int* a, int from, int to)

int main()

; int n = sizeof(a) / sizeof(int);

mergesort(a, 0, n - 1);

for (int i = 0; i < n; i++)

cout << a[i] << " ";

cout << endl;

return 0;

}

對於小規模的子陣列可以使用插入排序,這可以改進大多數遞迴演算法的效能,因為遞迴會使小規模問題中的方法的呼叫過於頻繁。這一般可以將歸併排序的執行時間縮短10%~15%。

資料結構與演算法 歸併排序實現

初始值陣列 24,13,26,1,2,27,38,15 思路 1.先分成兩個大小相同的子陣列 24,13,26,1 2,27,38,35 2.在劃分 24,13 26,1 2.27 38,35 3.再劃分 24 13 36 1 2 27 38 35 此時有8個陣列,每個陣列可以視為有序的陣列 實現 ...

資料結構與演算法 歸併排序

include include include string include include include include algorithm using namespace std void merge vector input,int left,int mid,int right,vector...

資料結構與演算法(歸併排序)

歸併排序是採用分治法的乙個典型的應用,歸併排序的思想就是先遞迴分解陣列,在合併陣列。將陣列分解最小之後,然後合併兩個有序陣列,基本思路是比較兩個陣列的前面的數,誰小就先取誰,取了後相應的指標就往後移一位,直至乙個陣列為空,最後把另乙個陣列的剩餘部分複製過來即可。def merge sort alis...