我用的是PHP实现的,为什么我的插入排序反而比选择排序快呢?

来源:2-5 插入排序法 - Insertion Sort

接力

2017-05-16

http://szimg.mukewang.com/591aad7b00010bf003700081.jpghttp://szimg.mukewang.com/591aae2700010b3605690486.jpg

http://szimg.mukewang.com/591abe09000126e902880152.jpg

http://szimg.mukewang.com/591abe090001971904820420.jpg


写回答

2回答

liuyubobobo

2017-05-17

是的哦,选择的语言不同,语言底层的实现和优化都会有比较大的区别,所以对于算法,在一些“常数”的时间上会有区别。所谓的“常数”的时间,是指比如在这个例子里,选择排序和插入排序都是O(n^2)级别的排序算法,我用C++实现选择排序快一些;你用PHP实现有可能插入排序就快一些。尤其对于脚本语言,这个问题会更严重,代码的执行效率会严重依赖于具体逻辑的写法。这是因为脚本语言中,对底层函数都会有专门的优化,但是上层逻辑由于使用解析器执行,相应就会比较慢。


如果选择使用脚本语言实现这个课程的代码,不用过于纠结“常数项”算法改进的结果。了解这个思路就好了。不过看了下一小节你就会知道,当我们在C++中将插入排序的swap进行优化以后,在C++里插入排序也比选择排序快了。所以,这说明在PHP语言中,swap对于算法性能的影响并不大:)

0
1
接力
非常感谢!
2017-05-17
共1条回复

SapereAudor

2017-05-16

php的底层和c++本身是有区别的。

1
0

算法与数据结构(C++版) 面试/评级的算法复习技能包

课程专为:短时间内应对面试、升职测评等艰巨任务打造

11190 学习 · 1614 问题

查看课程