算法入门之二分查找
引入
- 假设要在电话簿中找一个名字以K打头的人,(现在谁还用电话簿!) 可以从头开始翻页,直到进入以K打头的部分。但你很可能不这样做,而是从中间开始,因为你知道以K打头的名字在电话簿中间。 又假设要在字典中找一个以O打头的单词,你也将从中间附近开始。
- 现在假设你登录Facebook。当你这样做时,Facebook必须核实你是 否有其网站的账户,因此必须在其数据库中查找你的用户名。如果你的用户名为karlmageddon,Facebook可从以A打头的部分开始查找,但更合 乎逻辑的做法是从中间开始查找。
- 这是一个查找问题,在前述所有情况下,都可使用同一种算法来解 决问题,这种算法就是二分查找。
简介
二分查找是一种算法,其输入是一个有序的元素序列。如果要查找的元素包含在该序列中,二分查找返回其位置;否则返回null。
示例
具体代码如下:
算法时间复杂度
思考
既然已经知道了二分查找的基本原理和用法,那么思考一下如果在未命中查找的情况下,要求返回这个目标元素将会被按顺序插入的位置,上面的代码又该做出如何的修改呢???