追求算法(特别是普遍高效的)已经不再重要?因为现在计算机硬件的成本,比起以前已经很便宜,是否意味着算法和改进算法的技能已经不那么重要了?大部分时候,只要别写出一个死循环就行了。但当你拥有了强悍的硬件,是不是意味着烂代码也不是什么大问题? Pavel Zaichenkov 11 票:我特别喜欢《算法导论》一书中的一个例子,以摧枯拉朽地方法说明了算法性能的重要性。 我们来比较两种排序算法:“插入排序”和 “归并排序”。他们的算法复杂度分别是 O(n2)=c1n2 和 O(nlogn)=c2n lg n。一般情况下,归并排序算法有一个更大的常数因子,所以我们假设 c1 为了回答你的问题,我们在一台时髦的高速电脑 A 上跑“插入排序”算法,和一台跑“归并排序”算法的老土电脑 B 做对比。 我们假设: - 输入的问题数据量为1,000万个数字:n=107; - 电脑A一秒钟可以执行1010次运算指令 ( ~10GHz ); - 电脑B一秒钟只能执行107次运算指令 ( ~10MHz ); - 常数系数 C1 = 2(有点夸张),C2 = 50 (比现实中稍微小了一点) 于是在以上假设下,我们得到如下结果: |