歸併排序-鏈表,數組

歸併排序,思路來源於兩個有序數組進行合併,時間複雜度爲O(m+n)(m,n分別表示兩個數組的長度)

因此,在對數組進行排序時,可構想數組的前一半和後一半都是有序數組,因此,問題的規模縮小爲原來的一般。

依次類推,最終只要對兩個單個元素進行排序即可。

依次,歸併排序的時間複雜度爲O(n*logn).n是表示每一輪進行排序都要對每個元素進行比對,logn是表示一共進行了logn輪的排序。

但是兩個有序數組進行合併,無法在原來的位置進行處理(in-place),需要額外空間,額外空間的大小就是原數組的大小,因此空間複雜度爲O(n)

 

針對鏈表排序,也可進行歸併排序,並且不需要額外空間。可參考leetcode題目排序鏈表,其中額外要求在O(nlogn)時間複雜度和常數級別空間複雜度上,就可使用歸併排序滿足要求。

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