合併排序 leetcode 4

合併排序

歸併是指將若干個已排序的子文件合併成一個有序的文件。

常見的歸併排序:Merge sort ,Polyphase Merge sort, Strand sort

兩路歸併排序(Merge sort) 該算法是採用分治法(Divide and conquer)的一個非常典型的應用。

歸併操作的基本步驟:

1、申請兩個與已經排序序列相同大小的空間,並將兩個序列拷貝其中;

2、設定最初位置分別爲兩個已經拷貝序列的起始位置,比較兩個元素的大小,依次選擇相對小的元素放到原始序列;

3、重複2直到某一拷貝序列全部放入原始序列,將另一個序列剩下的所有元素直接複製到原始序列尾。


設歸併排序的當前區間是R[low..high],分治法的三個步驟是:
1.分解:將當前區間一分爲二,即求分裂點
2.求解:遞歸地對兩個子區間R[low..mid]和R[mid+1..high]進行歸併排序;
3.組合:將已排序的兩個子區間R[low..mid]和R[mid+1..high]歸併爲一個有序的區間R[low..high]。
遞歸的終結條件:子區間長度爲1(一個記錄自然有序)。

算法示意圖:



發佈了25 篇原創文章 · 獲贊 8 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章