二分查找 (Binary Search)

二分查找的介绍和最基本的代码实现

我们前面将十种基本的排序方法全部学习了一遍,排序的重要意义就是为检索带来方便。试想有106个整数,在这些整数里面寻找是否包含12345这个整数,就需要将整个数组遍历106次。而如果先将数组A排序号,就可以查找的更快。

我们这里学习的更快的查找方式就是二分查找(Binary Search),有时也被称为折半查找。其实就是我们经常玩的一个猜数字的游戏:一个人在心中想了一个不超过1000的正整数,这里我们假设为520(好的,爱你),我们可以保证在10次之内猜到它(对于我们每次猜测的数,那个人会告诉我们大了小了还是正好),猜的方法的核心思想就是“二分”,具体猜的方法如下:

第一次猜测(0+1000)/2=500,小了。
第二次猜测(500+1000)/2=750,大了。
第三次猜测(500+750)/2=625,大了。
第四次猜测(625+500)/2=562,大了。
第五次猜测(562+500)/2=531,大了。
第六次猜测(531+500)/2=515,小了。
第七次猜测(531+515)/2=523,大了。
第八次猜测(523+515)/2=519,小了。
第九次猜测(519+523)/2=521,大了。
第十次猜测(519+521)/2=520,猜到了

由于整个查找序列是一个单调的序列,于是我们可以每次“折半”我们的查找区间去查找我们想要的结果。这也就是二分查找的基本思路。

代码实现:

int Binary_Search(int*a,int target,int l,int r){
   //l和r分别表示每次折半查找的查找区间的左右端点
	while (l<r){
   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值