歸併排序
思想:將兩個有序陣列歸併成乙個更大的陣列。
優點:保證任意長度為
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...