C语言中折半查找法(二分法)的实现

C语言中折半查找法(二分法)的实现折半查找法也叫做二分查找 顾名思义 就是把数据分成两半 再判断所查找的 key 在哪一半中 再重复上述步骤知道找到目标 key 注意 咳咳 敲黑板 折半查找法仅适用于对已有顺序的数组 数据进行操作 很显然 折半查找法相对于其他查找方法例如顺序查找法效率要高很多 下面我们来实际操作一下 了解二分查找的奥义 例如 要在数组 arr 8 7 9 6 4 1 2 5 3 10 中查找 key

代码如下:

#include 
     int BinSearch(int arr[],int len,int key) //折半查找法(二分法) { 
    int low=0; //定义初始最小 int high=len-1; //定义初始最大 int mid; //定义中间值 while(low<=high) { 
    //mid=(low+high)/2;//可能会溢出 mid=low+(high-low)/2; //找中间值 if(key==arr[mid]) //判断min与key是否相等 return mid; else if(key>arr[mid]) //如果key>mid 则新区间为[mid+1,high] low=mid+1; else //如果key 
   
     high 
    =mid 
    - 
    1 
    ; 
    } 
    return 
    - 
    1 
    ; 
    //如果数组中无目标值key,则返回 -1 ; 
    } 
    int 
    main 
    ( 
    ) 
    { 
      
    int arr 
    [ 
    ] 
    = 
    { 
      
    1 
    , 
    2 
    , 
    3 
    , 
    4 
    , 
    5 
    , 
    6 
    , 
    7 
    , 
    8 
    , 
    9 
    , 
    10 
    , 
    11 
    } 
    ; 
    //首先要对数组arr进行排序 
    printf 
    ( 
    "%d \n" 
    , 
    BinSearch 
    (arr 
    , 
    ( 
    sizeof 
    (arr 
    ) 
    / 
    sizeof 
    (arr 
    [ 
    0 
    ] 
    ) 
    ) 
    , 
    7 
    ) 
    ) 
    ; 
    return 
    0 
    ; 
    } 
   

运行结果如下:

在这里插入图片描述
希望对您有所帮助!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/203772.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午9:37
下一篇 2026年3月19日 下午9:37


相关推荐

  • myeclipse6.5激活码_oracle注册码

    myeclipse6.5激活码_oracle注册码 MyEclipse6.0.1注册码Subscriber:administratorSubscriptionCode:nLR7ZL-655342-54657656405281154注册后:Subscriber:administratorProductID:E2MY(MyEclipseStandardSubscription)Licensever

    2025年11月12日
    3
  • centos安装mysql客户端安装_CENTOS安装MYSQL

    centos安装mysql客户端安装_CENTOS安装MYSQL1[root@localhost~]#yuminstallmysql-server注意:此处错误提示为安装失败。原因:CentOS7自带有MariaDB而不是MySQL,MariaDB和MySQL一样也是开元的数据库解决方案:如果必须要安装MySQL,首先必须添加mysql社区repo通过输入命令:sudorpm-Uvhhttp://dev.mysql.com/get/mysql-c…

    2022年6月26日
    29
  • java递归生成树形菜单_java递归无限层级树

    java递归生成树形菜单_java递归无限层级树java递归实现权限树(菜单树)省市县多级结构

    2025年11月27日
    4
  • 卷积神经网络CNN(2)—— BN(Batch Normalization) 原理与使用过程详解[通俗易懂]

    卷积神经网络CNN(2)—— BN(Batch Normalization) 原理与使用过程详解[通俗易懂]BatchNormalization是由google提出的一种训练优化方法。网上对BN解释详细的不多,大多从原理上解释,没有说出实际使用的过程,这里从what,why,how三个角度去解释BN。

    2022年7月18日
    16
  • idea全局查找关键字快捷键_hbuilder全局搜索

    idea全局查找关键字快捷键_hbuilder全局搜索简介在使用IDEA时,可以使用双击Shift的方式进行关键字的查找,这是个很好的功能。但IDEA也提供了对于字符串的查找,比如说查找代码中"192.168.1.100"的字符串,又该如何敲击呢。用法Edit-&gt;Find-&gt;FindinPath-&gt;输入感兴趣的内容即可快捷键Ctrl+Shift+F…

    2025年8月4日
    5
  • GridView利用CheckBox复选框列实现单选功能

    GridView利用CheckBox复选框列实现单选功能自Dev13.2开始,GridView提供了自带的复选框列,该功能能实现多选操作,方便了不少,那如果想把这个自带的复选框列做成单选,那就需要单独处理了。先补充一下,GridView的复选框列怎么设置,如下代码片段,只要设置前面两个属性即可在GridView看到有一列复选框(BandedGridView较老版本不支持这个功能,应该得在19.2或者20之后的版本才支持,具体可以看看自己的版本,如果设置无效,那么说明不支持)://设置显示复选框列gridview.Option

    2022年5月7日
    86

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号