关于 for 循环中的 j - 1>=0 和 j > 0 的效率问题,太诡异了

来源:2-2 实现插入排序法

iTvX

2020-11-12 11:58:58

先用 j > 0 跑选择排序

然后改成 j - 1 >= 0,继续测试选择排序

这个算法一模一样,什么都没改,我跑了 30 多次,每次用 j - 1 > =0 都是 17 秒左右,而用 j >0 都在 16 秒左右,这两个效率怎么会有这么大差别,不应该啊。

而且我跑了 30 多次,每次都一样,一个是 16 秒,一个是 17 秒,只是小数点后不一样而已。求bobo老师指点迷津

写回答

1回答

liuyubobobo

2020-11-12

第二种写法每次要多计算一个 j - 1,也就是多了一个减法操作:)


对于 10 万级别的数据,内层循环执行的级别是 100 亿,也就是第二种写法多了这么多次操作,差 0.6 秒,我觉得差不多:)


不过,我们通常在算法学习中,不需要太关注这种实现细节上的差异。后面你就会看到,实现的再烂的归并排序算法,也能轻松在 1 秒中的时间搞定 100 万的数据。因为算法的改变实现性能的飞跃,是实现细节替代不了的,这才是我们学习算法的目的呀!


继续加油!:)

0
hcuipi
回复
hTvX
hp>>= 效率是不是比 >效率低,

h020-12-12
共3条回复

算法与数据结构

波波老师5年集大成之作,算法与数据结构系统学习,考试、面试、竞赛通用

2584 学习 · 1063 问题

查看课程