【題目描述】
Sort a linked list in O(nlogn) time using constant space complexity.
在O(nlogn) 時間複雜度和常數級的空間複雜度下給鏈表排序。
【題目鏈接】
www.lintcode.com/en/problem/sort-list/
【題目解析】
此題可以歸併排序。以下歸併排序實現的幾個要素。
1.按長度等分鏈表,歸併雖然不嚴格要求等分,但是等分能保證線性對數的時間複雜度。由於鏈表不能隨機訪問,故可以先對鏈表進行遍歷求得其長度。
2.合併鏈表,細節已在Merge Two Sorted Lists | Data Structure and Algorithm中詳述。
在按長度等分鏈表時進行「後序歸併」——先求得左半部分鏈表的表頭,再求得右半部分鏈表的表頭,最後進行歸併操作。
由於遞歸等分鏈表的操作需要傳入鏈表長度信息,故需要另建一輔助函數。
【參考答案】
www.jiuzhang.com/solutions/sort-list/