1. 程式人生 > >JavaScript排序之歸併排序

JavaScript排序之歸併排序

1.簡介

歸併排序是建立在歸併操作上的一種有效的排序演算法。該演算法是採用分治法的一個非常典型的應用。歸併排序是一個O(nlogn)的演算法,其基本思想就是一個分治的策略,先進行劃分,然後再進行合併。

2.舉例

假設有這樣一個數組{1,6,2,48,18,56},如果要對它進行排序的話首先從中間分開,這樣這個陣列就變成了兩個陣列{1,6,2}和{48,18,56}。對這兩個陣列,也分別進行這樣的操作,逐步的劃分,直到不能再劃分為止(每個子陣列只剩下一個元素)。


劃分過程是從上到下進行的,而歸併的過程是從下往上進行的。例如上圖左邊最下層{1}、{6}、{2},在合併後就是{1,2,6},上圖右側也是同樣的道理,合併之後是{18,48,56}。由於這兩個子陣列本身就是有序的,所以合併的過程就是,每次從待合併的兩個子陣列中選取一個最小的元素,然後把這個元素放到合併後的陣列中,依次類推,直到合併到最上層結束,這是資料的排序已經完成了。最後的結果就是{1,2,6,18,48,56}。



3.JavaScript程式碼: