c语言如何实现二分查找

1:二分查找的简介

我们经常遇到在数组中找到其中一个特定得元素,,假设我们一个一个的去数组中找这个元素的话,如果数组中的元素只有几个或者几十个的时候那么可能会很快找到需要的元素,那么如果我们面临的是更多的元素的时候呢,如果也按照常规的去数组中一个元素一个元素的排查那么是不i是需要消耗大量的内存和时间呢?那么这时就充分体现出二分查找的简洁与方便。

2:二分查找的思路

二分查找就是在多个元素中每一次都折半去查找一次。我们设一个数组为n里面的元素个数有{1,2,3,4,5,6,7,8,9};设我们需要找到元素中的7。我们知道数组取值对应的是下标,那么我们在设一个左下标为left,在设一个右下标为right。我们知道数组的第一个下标是从0开始,那么右下标就是元素个数-1。在设置一个中间下标为mid=(left+right)/2。

 

这时我们就得到了我们的中间下标。我们在给上一个循环使如果查找一次中间下标大于我们查找的数那么我们的右下标此时就说明大了,就把中间下标减一之后赋值给我们的右下标,如果小了就加上一之后赋值给我们的左下标。

 3:举例说明

设这个数组里面的元素个数为{1,2,3,4,5,6,7,8,9},我们查找的数为7

第一次查找                 mid=(left+right)/2         mid==下标为4对应元素5        小于我们查找的数那么把中间下标加一之后赋值给left==下标为4+1;右下标不变。此时没查找的元素为5 6 7 8 9

第二次查找                 mid=(left+right)/2         mid==下标为7对应元素8        大于我们查找的数那么把中间下标减一之后赋值给right==下标为7-1,那么此时查找的范围为 下标为5 6的数

第三次查找                 mid=(left+right)/2         mid==下标为5                          小于我们查找的数那么把中间下标加一之后赋值给left==下标为5+1;

第四次查找                mid=(left+right)/2         mid==下标为6对应元素7 

                      

4:代码的实现

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值