二分查找的实现

本文详细介绍了二分查找算法的基本概念、使用条件及其实现思路。通过实例演示了如何在一个有序数组中查找指定元素并返回其下标位置,同时提供了完整的C语言实现代码及其运行结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.基本概念:二分查找是一种常见的查找算法,是在已经排好顺序的数组中找到想要找到的数字或者字符

2.使用条件:已经排好顺序的数组

3.基本思路

和游戏“数字炸弹”一样,通过不断二分缩小边界,快速找到需要的数字。

如图数组元素为11-19,我们需要找到数字13,并返回下标。因为数组是排好序的,所以我们选择中间元素15和目标数13比较,发现中间数字大于13,所以13一定是在中间元素15的左半边区间。

然后我们将右边界收缩到15,即15右边的数字舍弃,继续循环使用以上步骤,将中间元素13和目标数13比较,相等返回下标。

此题重点是边界收缩的思路。

4.代码实现

#include<stdio.h>
   int main(){
   
     int nums[]={11,12,13,14,15,16,17,18,19};
     int find=13;    //目标数字
   
     int left=0;       //左边界
     int right=sizeof(nums)/4-1;
      //右边界,先计算数组长度,然后除以4(一个int 4个字节),就是数组元素个数
  
    int mid=0;
  
    while(left<=right){
  
          mid=(left+right)/2;
          if(nums[mid]<find){
              left=mid+1;           //收缩左边界至中心:
          }
  
             else if(nums[mid]>find){
                right=mid-1;        //收缩右边界至中心
                }
  
            else if(nums[mid]==find){
              printf("%d\n",mid);
              return 0;                                                                                                                                               
               }
      }
          printf("未找到");    //如果未找到,打印未找到
        return 0;
  }

 

5.运行结果

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一颗二叉树_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值