排序-歸并排序

原理

  • 假設(shè)初始序列含有n個(gè)記錄,則可以看成是n個(gè)有序的子序列;
  • 每個(gè)子序列的長(zhǎng)度為1,然后兩兩歸并,得到?n/2?(?x?表示不小于x的最小整數(shù))個(gè)長(zhǎng)度為2或1的有序子序列;再兩兩歸并,……;
  • 如此重復(fù),直至得到一個(gè)長(zhǎng)度為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)定的排序算法
完整代碼地址

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 將一個(gè)記錄插入到已排序好...
    依依玖玥閱讀 1,270評(píng)論 0 2
  • 概述 排序有內(nèi)部排序和外部排序,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進(jìn)行排序,而外部排序是因排序的數(shù)據(jù)很大,一次不能容納全部...
    蟻前閱讀 5,214評(píng)論 0 52
  • 概述:排序有內(nèi)部排序和外部排序,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進(jìn)行排序,而外部排序是因排序的數(shù)據(jù)很大,一次不能容納全部...
    每天刷兩次牙閱讀 3,742評(píng)論 0 15
  • 版權(quán)聲明:本文源自簡(jiǎn)書tianma,轉(zhuǎn)載請(qǐng)務(wù)必注明出處:http://www.lxweimin.com/p/df8a...
    tianma閱讀 665評(píng)論 0 0
  • 媽的智……智慧樹上智慧果,智慧樹下你和我
    0娜娜子0閱讀 1,325評(píng)論 0 0