歸併排序總結

2021-07-10 14:22:11 字數 683 閱讀 7263

歸併排序是利用分治思想,分開後一步一步歸併的過程。

基本思路就是將陣列分成二組a,b,如果這二組組內的資料都是有序的,那麼就可以很方便的將這二組資料進行排序。

可以將a,b組各自再分成二組。依次類推,當分出來的小組只有乙個資料時,可以認為這個小組組內已經達到了有序,然後再合併相鄰的二個小組就可以了。這樣通過先遞迴的分解數列,再合併數列就完成了歸併排序。

//將有二個有序數列a[first...mid]和a[mid+1...last]合併。  

void mergearray(int a, int first, int mid, int last, int temp)

while (i <= m)

temp[k++] = a[i++];

while (j <= n)

temp[k++] = a[j++];

//將temp退還給a

for (i = 0; i < k; i++)

a[first + i] = temp[i];

} void mergesort(int a, int first, int last, int temp)

} //為了省每次建立temp的時間,temp共用

bool mergesort(int a, int n)

歸併排序 總結

歸併排序的思想是把陣列不斷分割成兩半,然後不斷合併,具體就是先遞迴將陣列分成兩半分別排序,然後將結果歸併起來。分割的過程屬於遞迴行為,而合併過程用到了外排序的方法。外排序 用兩個指標指向兩個已排好序的陣列,申請乙個大小為n n為兩個陣列大小的和,n最大為原始陣列的大小 的陣列,把指標指向較小的數放進...

歸併排序總結

歸併排序 merge sort 是建立在歸併操作上的一種有效的排序演算法,該演算法是採用分治法 divide and conquer 的乙個非常典型的應用。將已有序的子串行合併,得到完全有序的序列 即先使每個子串行有序,再使子串行段間有序。若將兩個有序表合併成乙個有序表,稱為二路歸併。過程描述 歸併...

歸併排序總結

看了關於歸併排序的這篇文章之後,寫個總結 歸併排序是採用分治法的典型案例。基本思路 將陣列分成兩組 a,b,如果a,b組內的資料是有序的,那麼很容易將兩組陣列進行排序。為了將a.b兩組資料有序,那麼將a,b再分成兩組。依次類推,當分出來的小組只有乙個資料時,可以認為小組組內已經達到了有序,然後再合併...