二分查找介绍

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

二分查找适用场景

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

代码实现

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;}                     }
}

实现过程分析

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

二分查找算法-C语言实现相关推荐

  1. 二分查找算法c语言伪代码,算法-二分搜索算法

    算法:二分搜索算法(折半查找算法) 时间复杂度: 二分搜索算法概述 二分搜索算法伪代码 二分搜索算法实现 二分搜索算法概述 二分搜索算法,也称折半查找算法,即在一个有序数组中查找某一个特定元素.整个搜 ...

  2. C语言二分查找算法[基础算法]

    该算法一般适用于查找数组元素 二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好,占用系统内存较少; 其缺点是要求待查表为有序表,且插入删除困难. 适用于不经常变动而查找频繁的有序列表. ...

  3. 二分查找算法的一点改进

    在计算机科学中,二分查找,是一种在有序数组中查找某一特定元素的搜索算法.这种搜索算法每一次比较都使搜索范围减半.第一篇二分查找的论文发表于1946年,然而第一个没有bug的二分查找算法却是在1962年 ...

  4. 算法总结-二分查找算法

    二分查找也称折半查找(Binary Search),是一种效率较高的查找方法.该算法要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列.如果一个序列是无序的或者是链表,那么该序列就不能使用二 ...

  5. 二分查找算法(折半查找算法)

    二分查找算法(折半查找算法) 二分查找又称折半查找.二分搜索.折半搜索等,是在分治算法基础上设计出来的查找算法,对应的时间复杂度为O(logn). 二分查找算法仅适用于有序序列,它只能用在升序序列或者 ...

  6. 使用 Copilot 编写和翻译二分查找算法

    在这篇博客文章中,我将使用 Copilot 和 Copilot Labs 来编写并理解二分查找算法. 先决条件: 确保您已安装 GitHub Copilot 扩展程序和 GitHub Copilot ...

  7. 二分查找算法的两种实现方式:非递归实现和递归实现

    二分查找的条件是对一组有序数组的查找,这一点很容易忘记,在使用二分查找的时候先要对数组进行排序. 先说一下二分查找的思路:一个有序数组,想要查找一个数字key的下标,首先算出中间下标mid,利用mid ...

  8. 二分查找算法为什么要先排序

    其实二分查找算法就和我们在一个英文字典中找一个单词一样,比如要找middle这个单词,先把字典翻到大概中间的位置,那么现在字典就被分成两个部分了,middle这个单词要么在第一个部分,要么在第二个部分 ...

  9. LeetCode面试刷题技巧-二分查找算法代码思路解析

    二分查找的思想 提及二分查找算法,我想大部分人都不陌生,就算不是学计算机的,基本上也都使用过二分查找的思想,不信的话,且听我慢慢为你道来. 不知道你有没有玩过这样一个游戏,猜数字.就是说一个人心里想了 ...

最新文章

  1. 基于云的SD-WAN骨干接入服务
  2. python整理数据_Python数据类型整理
  3. 电脑中没有oracle服务器,用AnySQL在没有oracle客户端的服务器上发送邮件
  4. error: expected ‘{‘ before ‘;‘ token
  5. RabbitMQ 的概念
  6. 注解版poi操作工具
  7. 解决 elementUI 在IE下 table 表格宽度不是100%的问题
  8. 在PS中读取敏感数据
  9. 微言Netty:分布式服务框架
  10. ARM裸机--看门狗定时器
  11. 20190118 阿耐---《艰难的制造》
  12. 机器学习——决策树算法之代码+数学实例解析
  13. Tumblr扫黄正式开始!AI鉴黄也许是老司机们的头号敌人
  14. 【火炉炼AI】机器学习023-使用层次聚类算法构建模型
  15. C#语言跟WPF学习视频
  16. QCon2016演讲《Rust语言的核心竞争力》总结和补充
  17. 怎么windows设置qq邮箱服务器,电脑中如何添加QQ邮箱到Windows Live Mail
  18. 海胆状聚苯乙烯与α-氧化铁复合结构微球/聚苯乙烯/氧化石墨烯/CNTs复合微球研究方式
  19. 网易2018校园招聘编程题
  20. 使用appium桌面版在win平台连接逍遥模拟器(以梦幻西游手游为例)

热门文章

  1. ows.js里面的ctx和itemTable到底有哪些参数?
  2. IT人论房价 (二) 华为何逃离深圳,深圳怎么了
  3. 大年初十的风俗和禁忌有哪些?
  4. AMD葫芦里面卖的什么药?
  5. Git配置用户名和密码
  6. 全球与中国1,1‘-联-2-萘酚市场深度研究分析报告(2022)
  7. JavaScript的调试
  8. 推荐workFlowy
  9. 教你玩会HTC U11手机里面的这些小技巧,最后一个最实用!
  10. transformer做文本分类的keras实现完整版