原理
- 假設(shè)初始序列含有n個(gè)記錄呐舔,則可以看成是n個(gè)有序的子序列;
- 每個(gè)子序列的長度為1爬坑,然后兩兩歸并僵刮,得到?n/2?(?x?表示不小于x的最小整數(shù))個(gè)長度為2或1的有序子序列滥崩;再兩兩歸并岖圈,……;
- 如此重復(fù),直至得到一個(gè)長度為n的有序序列為止钙皮,這種排序方法稱為2路歸并排序蜂科。
-
比如將無序序列 {5,2,9,1,4,7,8,3} 歸并排序的流程如下圖所示:
遞歸方式實(shí)現(xiàn)
先將無序序列拆分為兩個(gè)有序的子序列,然后在將
兩個(gè)有序的子序列
進(jìn)行歸并排序;

<img src="https://raw.githubusercontent.com/liangxifeng833/my_program/master/images/datastruct/sort-merge-3.png" width="500" />
<img src="https://raw.githubusercontent.com/liangxifeng833/my_program/master/images/datastruct/sort-merge-4.png" width="500" />
<img src="https://raw.githubusercontent.com/liangxifeng833/my_program/master/images/datastruct/sort-merge-5.png" width="500" />
<img src="https://raw.githubusercontent.com/liangxifeng833/my_program/master/images/datastruct/sort-merge-6.png" width="500" />
非遞歸方式實(shí)現(xiàn)
<img src="https://raw.githubusercontent.com/liangxifeng833/my_program/master/images/datastruct/sort-merge-7.png" width="500" />
<img src="https://raw.githubusercontent.com/liangxifeng833/my_program/master/images/datastruct/sort-merge-8.png" width="500" />
時(shí)間復(fù)雜度為:O(nlogn)
是最穩(wěn)定的排序算法
完整代碼地址