of-K 和 少量元素轉insertion sort是最實用的排序方法。O(n^2)複雜度是極其小概率
事件,一般不會發生。同時因爲其對硬件cache的應用效率較高,實踐中Quicksort很難
被beat, 因爲cache的訪問速度比內存尋址快兩個數量級。
遞歸不僅僅是存partition point,遞歸的過程中堆棧會存儲所有function call 和相關變量的信息。
不過64bit的堆棧已經大幅簡化了。
worstcase n(log(n))。同時基本的merge想法和變形,不需要random access, 常常用
在很多其他問題的解決之中。比如說merge lists。但是megersort的constant factor
比較大,是quicksort的好幾倍。一般比Quicksort慢。
Heapsort因爲在時間上和空間上都是最優,在很多論文只要涉及到sort都會用它做理論
分析。constant factor還不錯,比merge sort的好。但是它的致命弱點是對cache利用
的不好,比如說max-heapify的過程中,很少有相鄰元素的處理。雖然有這些缺點,有
時小規模排序時還是有用。
(Cache就是數據locality的問題。Cache都小,但是快。所以如果程序處理的數據都是連
續的,或者說有很好locality的特性,Cache hit概率就大,運行就快。)
並不是涉及到交換的都是不stable,比如說insertion sort就是stable的。關鍵要看交
換的過程是怎麼樣的。