fvdcx's blog


  • 首页

  • 分类

  • 关于

  • 归档

  • 标签

二分查找的一般方法

发表于 2016-04-10   |   分类于 算法   |  

​ 90%以上的程序员无法正确无误的写出二分查找代码 , 原来我对这句话一直不以为然,认为二分查找没什么大的难度,但后来发现在一些二分查找的求解上,我经常由于边界条件或者等号问题,导致结果不正确或者死循环,而这些细节问题恰恰是求职面试中,面试官想要考察的点。

​ 后来看到了知乎上一些人对二分查找的心得讨论https://www.zhihu.com/question/36132386,感觉自己之前对二分查找理解还不够深入。这其中有个比较重要的概念是“循环不变原理”,这个原理最早是在算法导论上的插入排序引入的,大致意思是这三点:

初始化:在循环的第一轮迭代前某个特性是正确的;

保持:如果在循环的某一次迭代开始之前某个特性是正确的,那么在下一次迭代开始之前,也是正确的;

终止:当循环结束,某个特性也是正确的。

这很像数学归纳法。下面举一个二分查找例子,查找一个有序数组中不超过值x的元素。写法可以有很多种

阅读全文 »
1…3738
fvdcx

fvdcx

149 日志
14 分类
20 标签
GitHub
© 2015 - 2017 fvdcx
由 Hexo 强力驱动
主题 - NexT.Pisces