為什麼快速排序比原生排序快?

時間 2021-05-07 15:51:01

1樓:甄士隱

首先,阮一峰老師的快排序是存在問題的,具體請看我另乙個回答《阮一峰版快速排序完全是錯的》一文是否存在事實錯誤?

真正正確且標準的快排序,可參考我自己實現的一版(go 語言實現)Wang-Kai/algorithm

至於你的排序比原生 sort 快 4倍,可能的原因有兩個:

js 中 sort 排序不僅能對數字做排序,還能對單詞等按照首字母排序,所以你自己的排序方法可能只實現了 sort 排序的乙個功能子集在排序元素數量比較小的時候,快排序是不佔優勢的,這種情形下插入排序倒是最快的。

2樓:

不同瀏覽器引擎的實現方式不一樣,網上有篇文章介紹v8的有洞陣列holes in array的建立方式,你可以看看,或許對你有幫助。

3樓:楊光

首先,你的測試必須說出你用的瀏覽器。因為每個瀏覽器會採用不同的演算法來排序。拿chrome來說,chrome的原生演算法就是快速排序,所以在chrome下快速排序自定義函式跟原生函式的速度是一樣的。

如果你用了早期IE,或許會測出速度的差異。

為什麼不把合併排序稱為快速排序?

愛麗絲欣 很贊同!補充點 事實上不止歸併排序 快速排序,還有堆排序也是達到了線性對數級別的複雜度。比較這幾種線性對數級別的演算法時,乙個是要考慮到複雜度前面的常數因子的區別 二是要考慮在實際的運用中,堆排序用的非常少,很大程度就是因為堆排序排序時,資料位置相隔很遠,而快排等則很多時候是和相鄰的元素進...

關於演算法導論定理3 1,為什麼感覺快速排序的時間複雜度不滿足這個定理?

猥瑣的民工 快排無論你用什麼方法選基點,在運氣最倒霉的情況下,也就是每次選基點都剛好碰上區間內的最大或最小值的時候,複雜度提高為O n 2 是必然會發生的。儘管這種情況發生的概率極低,大約是1 n 但在你重複測試了n 次之後很可能會發生一次。 TravorLZH 對於某一種情況下 好 壞 平均 的時...

六十四卦為什麼那樣排序呢

很好使 易傳序卦傳 有說明,上篇乾坤是天地的開始,下篇鹹恆是夫婦之道。諸如此類。不過 序卦傳 的總體水平並不高。相比之下,雜卦傳 水平更高,乾剛坤柔,比樂師憂 嘖嘖。我同意 兩兩相偶,非復即反 就是每兩個相鄰卦都有密切的關係。但六十四卦為何是這個次序,抱歉,回答不了。 老王 唐孔穎達提出周易卦序 二...