【數據結構與算法】——歸併排序

歸併排序

基本思想

歸併(Merge)排序法是將兩個(或兩個以上)有序表合併成一個新的有序表,即把待排序序列分爲若干個子序列,每個子序列是有序的。然後再把有序子序列合併爲整體有序序列。


時間複雜度:

最好的情況下:一趟歸併需要n次,總共需要logN次,因此爲O(N*logN) 
最壞的情況下,接近於平均情況下,爲O(N*logN) 
說明:對長度爲n的文件,需進行logN 趟二路歸併,每趟歸併的時間爲O(n),故其時間複雜度無論是在最好情況下還是在最壞情況下均是O(nlogn)。


空間複雜度:

每次排序,都需要N個輔助空間,所以空間複雜度爲O(n)


穩定性:

          

      歸併排序是把序列遞歸地分成短序列,遞歸出口是短序列只有1個元素(認爲直接有序)或者2個序列(1次比較和交換),然後把各個有序的段序列合併成一個有序的長序列,不斷合併直到原序列全部排好序。可以發現,在1個或2個元素時,1個元素不會交換,2個元素如果大小相等也沒有人故意交換,這不會破壞穩定性。那麼,在短的有序序列合併的過程中,穩定是是否受到破壞?沒有,合併過程中我們可以保證如果兩個當前元素相等時,我們把處在前面的序列的元素保存在結果序列的前面,這樣就保證了穩定性。所以,歸併排序也是穩定的排序算法。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章