程序杂谈

在分治法排序中,当数组规模足够小时,使用插入排序来改进其运行时间,这个时候,多做了一步,获得了更高的效率。

 

(a+b)(a+b)与a*a+2*a*b+b*b是不同的,前者只需要做两次加法和一次乘法,后者却需要做四次乘法和三次加法。这个时候,多做了一步,却反而降低了效率。

 

a*b/c不同于a*(b/c),因为它受到计算机表示精度的限制。

 

《计算机算法设计与分析》中写到:

Knuth在其著作中提到,第一个二分搜索算法在1946年出现,但是每一个完全正确的二分搜索算法却直到1962年才出现。Bentley在其著作中也写到:90%的计算机专家不能在2小时内写出完全正确的二分搜索算法。

 

经常看到问一个排序算法是否稳定的题目,感觉这种题作答好难。因为一个排序算法是否稳定,很多时候完全取决于算法的代码实现,一个小于等于号写成小于号,算法仍然正确,但是它就稳定了,反之,把小于号写成小于等于号,它可能就不稳定了。

 

二分搜索中,我们需要考虑待搜索的区间的首尾表示是一个开区间,还是一个闭区间,还是一个半开半闭区间。弄清楚这个问题之后,一定要在循环中保持区间表示的一致性。

 

有时候增加一个哨兵结点,会带来极大程度的代码形式的统一。

 

你可能感兴趣的:(程序杂谈)