快排和归并排序哪个更快

在看算法图解的过程中,看到书中说时间复杂度同为O(nlogn),快排比归并排序快的原因是快排查找的常量要比归并小。

看完还不是很理解,去网上查了下资料,看了几种回答,还是《数据结构与算法分析:C++描述》中说的比较清楚,主要是因为:

1.C++模板有很强的inline优化机制,比较操作相对于赋值(移动)操作要快的多(尤其是元素较大时)

2.另一方面,一般情况下,归并排序的比较次数小于快速排序的比较次数,而移动次数一般多于快速排序的移动次数,二者大约都是2~3倍的差距。

因为这样,在C++中快排要比归并排序更快,但其实在java中恰恰相反,移动(赋值)一般比比较快。

参考知乎回答:

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

发布了5 篇原创文章 · 获赞 7 · 访问量 333

猜你喜欢

转载自blog.csdn.net/AnDiXL/article/details/104965715