其实当看到这个题目时我的第一想法是遍历数组,就像这样
这样的确可以找到,但是效率太低了,如果数据很多,一个一个遍历的找太慢了,这里我们仔细读题发现这是个有序的数组,那么我们就可以用二分查找法。
二分查找法
首先找到数组中间的元素n,首元素x,最后一个元素y,让n与我们要找的数a比较如果a大说明我们要找到数在n的右侧,左侧就可以舍弃了,此时我们的搜索范围就是n到y再找出n和y的中间元素,重复以上操作就可以找到。
比如我们要找7,那我们找到数组的中间元素是4(5也可以)比较后发现7>4说明7在4的右边
于是我们再找4到10的中间元素是7,经过比较7就是我们要找的数。
代码实现
通过梳理思路我们应该创建4个变量,和一个数组add
left:首元素下标
right:最后一个元素下标
a:要找的数
n:中间元素下标
接下来我们编写一下主体
经过分析我们知道left<right是必定成立的当right<乐left时说明所以循环条件就有了。
根据二分查找法最后代码如下
以上就是全部内容了,如果有错误或者不足的地方欢迎大家给予建议。