关于 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 万的数据。因为算法的改变实现性能的飞跃,是实现细节替代不了的,这才是我们学习算法的目的呀!
继续加油!:)
相似问题