请大牛来解释对于qsort和sort在VS6.0/2008/20102012 和 Qt中速度的差别
测试程序如下:
答:说明新版的DEBUG代码中增加了更多的排错代码。
3 VS系列的qsort越来越快,而sort运行越来越慢,是什么道理?
答:qsort变快可能是库中算法有了改进,或是编译器的优化能力有所增强。
sort变慢……如二楼所言,先把myfunction (data i,data j)的参数改为引用再测一下试试。
4 VS越新DEBUG和RELEASE速度差别越大,是为什么?
答:参见第二条。
此外,qsort一般是快速排序(quicksort),而std::sort一般实现为内省排序(introsort)。
introsort算法:
1:使用快速排序,递归将序列分割为“较大数”和“较小数”两个序列,直到序列长度为1。
2:当序列长度比较小时,改用插入排序,以避免复杂算法带来的额外开销。
3:当递归层数较多时改用堆排序,以处理对快速排序不利的数据分布。