歸併排序總結

2021-10-04 13:38:14 字數 857 閱讀 7002

看了關於歸併排序的這篇文章之後,寫個總結:

歸併排序是採用分治法的典型案例。

基本思路:

將陣列分成兩組 a,b,如果a,b組內的資料是有序的,那麼很容易將兩組陣列進行排序。

為了將a.b兩組資料有序,那麼將a,b再分成兩組。依次類推,當分出來的小組只有乙個資料時,

可以認為小組組內已經達到了有序,然後再合併相鄰兩個小組。

通過先遞迴的分解數列,再合併數列就完成了歸併排序。

**如下:

#include using namespace std;

//將有二個有序數列a[first...mid]和a[mid...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++];

// 再將臨時陣列的值放置在排序陣列中

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

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

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

}bool mergesort(int a, int n)

int main()

; mergesort(b, 10);

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

return 0;

}

歸併排序總結

歸併排序是利用分治思想,分開後一步一步歸併的過程。基本思路就是將陣列分成二組a,b,如果這二組組內的資料都是有序的,那麼就可以很方便的將這二組資料進行排序。可以將a,b組各自再分成二組。依次類推,當分出來的小組只有乙個資料時,可以認為這個小組組內已經達到了有序,然後再合併相鄰的二個小組就可以了。這樣...

歸併排序 總結

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

歸併排序總結

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