歸併排序,思路來源於兩個有序數組進行合併,時間複雜度爲O(m+n)(m,n分別表示兩個數組的長度)
因此,在對數組進行排序時,可構想數組的前一半和後一半都是有序數組,因此,問題的規模縮小爲原來的一般。
依次類推,最終只要對兩個單個元素進行排序即可。
依次,歸併排序的時間複雜度爲O(n*logn).n是表示每一輪進行排序都要對每個元素進行比對,logn是表示一共進行了logn輪的排序。
但是兩個有序數組進行合併,無法在原來的位置進行處理(in-place),需要額外空間,額外空間的大小就是原數組的大小,因此空間複雜度爲O(n)
針對鏈表排序,也可進行歸併排序,並且不需要額外空間。可參考leetcode題目排序鏈表,其中額外要求在O(nlogn)時間複雜度和常數級別空間複雜度上,就可使用歸併排序滿足要求。