合併排序
歸併是指將若干個已排序的子文件合併成一個有序的文件。
常見的歸併排序: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(一個記錄自然有序)。
算法示意圖: