爲什麼不用二進制插入插入排序被認爲是最好的?爲什麼合併排序被認爲是最好的
Merge sort : T(n) = n + 2*T(n/2) = O(n*log(n))
But insertion sort with binary insert : T(n) = log(n-1) + T(n-1) = O(log(n!))
and n^n > n! ; so n*log(n) > log(n!)
對於更大的n,它確實有助於提高性能。
或者我錯過了什麼?
請原諒我,如果我問的問題太重要,我是編程新手,我只是希望事實正確。
使用二進制插入的插入排序仍然需要n個插入;我不確定你是如何派生出O(log(n!))的?參見wikipedia:http://en.wikipedia.org/wiki/Insertion_sort(二進制插入排序)。最壞情況下的複雜度是O(n * log(n)) – davmac
@HenkHolterman,不,只是錯誤的。例如3^3 = 3 * 3 * 3,而3! = 3 * 2 * 1. – davmac
合併排序可以非常平行。對gpu有好處。適用於opertons和xeons。 –