0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何用C语言实现高效查找(二分法)

信盈达 2024-06-04 08:04 次阅读

今天给分享一下使用C语言实现二分算法,主要包含以下几部分内容:

  • 二分查找算法介绍
  • 二分查找算法使用场景
  • 二分查找算法代码实现
  • 二分查找算法实现过程

用C语言实现二分法查找f489a4ba-2205-11ef-bd4a-92fbcf53809c.png

二分查找也称折半查找(Binary Search),是一种效率较高的查找方法。

f48d8de6-2205-11ef-bd4a-92fbcf53809c.png

f4a93104-2205-11ef-bd4a-92fbcf53809c.png

有序且不重复的数组中的元素的查找。

f4ae4306-2205-11ef-bd4a-92fbcf53809c.png

int findNumIndex(int *arr,int len,int n){ int end = len; int start = 0;
//越界 if(n > *(arr+len-1) || n < *(arr)) { return -1; }
while(1) { int midIdx = (end + start) / 2;
if(start == midIdx && *(arr+midIdx) != n) { return -1; }
if(*(arr+midIdx) == n) { return midIdx; } else if(*(arr+midIdx) > n) { end = midIdx; } else { start = midIdx; } }}

f4b2438e-2205-11ef-bd4a-92fbcf53809c.png

首先,假设数组中的元素是按升序排列的,将最中间的数字和要搜索的数字进行比较,如果两者相等,则搜索成功;否则,从中间数字位置将数组分为两个子数组,前数组和后数组,如果中间数字大于搜索数字,则进一步查找前数组中的元素,否则在后一个数组中进行查找。重复上述过程,直到找到满足条件的数字,则搜索成功,或者直到子表所有的数字查找完毕还没有找到该数字,此时搜索不成功。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    180

    文章

    7604

    浏览量

    136710
  • 代码
    +关注

    关注

    30

    文章

    4780

    浏览量

    68535
收藏 人收藏

    评论

    相关推荐

    求助:如何用C语言实现直接寻址

    何用C语言实现直接寻址,就像汇编里面的mov 0x80,0x60
    发表于 05-13 16:39

    Java常用排序算法&程序员必须掌握的8大排序算法+二分法查找

    Java常用排序算法&程序员必须掌握的8大排序算法+二分法查找
    发表于 10-19 19:33

    Labview实现二分法查找数值区间

    二分法是检索里经常用到的一种方法,可以实现对有序数组进行检索,本程序通过二分法实现对数据进行区间匹配,并输出最小匹配区间和匹配区间的索引值,尤其适合多段函数的数值计算。
    发表于 04-18 13:22

    浅析渐近表示二分法

    《算法图解》NOTE 1 算法的渐近表示以及二分法
    发表于 10-10 10:58

    何用VHDL语言实现帧同步的设计?

    帧同步是什么工作原理?如何用VHDL语言实现帧同步的设计?
    发表于 04-08 06:33

    何用C语言实现面向对象编程

    、组合、多态等面向对象的功能,但C语言有struct和函数指针。我们可以用struct中的数据和函数指针,以此来模拟对象和类的行为。所以在正式开始设计模式前,先看看如何用C
    发表于 07-12 07:24

    何用C程序解一元三次方程根

    摘要:本文介绍了高等数学的近似计算方法中切线二分法的思想,再利用其思想结合C程序设计语言,编写出了求一元三次方程根的程序,该程序稍加修改,即可成为求更高次方
    发表于 06-21 09:19 61次下载

    C语言教程之二分查找

    C语言教程之二分查找,很好的C语言资料,快来学习吧。
    发表于 04-22 11:06 0次下载

    基于C语言二分查找排序源代码

    本文档内容介绍了C语言归并、选择、直接插入、希尔、冒泡、快速、堆排序与顺序、二分查找排序源代码,分享给大家供大家参考。
    发表于 01-04 11:24 1次下载

    基于二分法与移动Sink的无线传感器网络数据收集协议

    传感器节点能量的有限性,严重制约了无线传感器网络的推广与发展。因此,如何改善传感器节点能源的利用率、节约能耗以及提高整个网络的生存周期成为该领域研究者面临的挑战之一。 为延长网络生存周期,提出一种基于二分法与移动Sink的无线传感器网络数据收集协
    发表于 03-12 10:43 0次下载
    基于<b class='flag-5'>二分法</b>与移动Sink的无线传感器网络数据收集协议

    图像处理算法之二分查找

    二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。
    的头像 发表于 03-17 11:29 4870次阅读

    详解C语言二分查找算法细节

    我相信对很多读者朋友来说,编写二分查找的算法代码属于玄学编程,虽然看起来很简单,就是会出错,要么会漏个等号,要么少加个 1。
    的头像 发表于 06-22 09:05 2807次阅读
    详解<b class='flag-5'>C</b><b class='flag-5'>语言</b><b class='flag-5'>二分</b><b class='flag-5'>查找</b>算法细节

    筑基_C_5_对数组的二分查找

    C语言泛型编程,实现对数组中某元素的二分查找
    发表于 12-06 10:21 9次下载
    筑基_<b class='flag-5'>C</b>_5_对数组的<b class='flag-5'>二分</b><b class='flag-5'>查找</b>

    如何理解二分查找算法

    本文就来探究几个最常用的二分查找场景:寻找一个数、寻找左侧边界、寻找右侧边界。 而且,我们就是要深入细节,比如不等号是否应该带等号,mid 是否应该加一等等。分析这些细节的差异以及出现这些差异的原因,保证你能灵活准确地写出正确的
    的头像 发表于 04-19 11:10 618次阅读
    如何理解<b class='flag-5'>二分</b><b class='flag-5'>查找</b>算法

    FPGA设计中二分法查表算法的实现

    二分查找算法是在软件中广泛应用的一种算法,那么在FPGA的设计中是否可以用这种算法呢?什么场景下会可能用到这种算法呢?
    的头像 发表于 09-06 18:26 1043次阅读
    FPGA设计中<b class='flag-5'>二分法</b>查表算法的<b class='flag-5'>实现</b>