快排和歸併排序哪個更快

在看算法圖解的過程中,看到書中說時間複雜度同爲O(nlogn),快排比歸併排序快的原因是快排查找的常量要比歸併小。

看完還不是很理解,去網上查了下資料,看了幾種回答,還是《數據結構與算法分析:C++描述》中說的比較清楚,主要是因爲:

1.C++模板有很強的inline優化機制,比較操作相對於賦值(移動)操作要快的多(尤其是元素較大時)

2.另一方面,一般情況下,歸併排序的比較次數小於快速排序的比較次數,而移動次數一般多於快速排序的移動次數,二者大約都是2~3倍的差距。

因爲這樣,在C++中快排要比歸併排序更快,但其實在java中恰恰相反,移動(賦值)一般比比較快。

 

參考知乎回答:

https://www.zhihu.com/question/24727766

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章