在一个有序数组中查找具体的某个数字n

其实当看到这个题目时我的第一想法是遍历数组,就像这样

 这样的确可以找到,但是效率太低了,如果数据很多,一个一个遍历的找太慢了,这里我们仔细读题发现这是个有序的数组,那么我们就可以用二分查找法。

二分查找法 

首先找到数组中间的元素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时说明所以循环条件就有了。

根据二分查找法最后代码如下

以上就是全部内容了,如果有错误或者不足的地方欢迎大家给予建议。 

 

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值