当前位置: 首页 > ds >正文

二分查找法———(c语言)

简单讲解二分查找法查找数组下标:

 首先,创建一个大小为10的数组,定义一个左下标,还有右下标,要查找的数字k,还有中间的下标

    int a[] = { 1,2,3,4,5,6,7,8,9,10 };int left = 0;int right = sizeof(a) / sizeof(a[0]) - 1;int i,k=0,mid=0;

所谓二分法,就是不断细分。因此,我们需要用到循环来不断细分,最后达到最终目标。

当我们查找“8”这个数字时,给k赋值8。进入循环中,对左右下标不断细分,从而知道8所在的位置。

核心代码:

while (left <= right) {mid = (left + right) / 2;if (k>a[mid]) {left = mid + 1;}else if (k<a[mid]) {right = mid - 1;}else {break;}}if (left <= right) {printf("找到了!下标是:%d", mid);}else {printf("没找到!\n");}

图解:

第二次循环:

 

第n次循环:

 

 整体思路就是这样子,通过对左右下标的移动,更新中间下标,得到要查找的下标,退出循环。

源代码:

#include<stdio.h>
int main(){int a[] = { 1,2,3,4,5,6,7,8,9,10 };int left = 0;int right = sizeof(a) / sizeof(a[0]) - 1;int i,k=0,mid=0;for (i = 0; i < sizeof(a) / sizeof(a[0]) - 1; i++) {printf("%d ", a[i]);}printf("\n请输入要查找的数字\n");scanf("%d", &k);while (left <= right) {mid = (left + right) / 2;if (k>a[mid]) {left = mid + 1;}else if (k<a[mid]) {right = mid - 1;}else {break;}}if (left <= right) {printf("找到了!下标是:%d", mid);}else {printf("没找到!\n");}return 0;
}//二分查找法

 代码实现:

 

 

http://www.xdnf.cn/news/11992.html

相关文章:

  • 火车头采集鹿图社整站采集规则-采集文章图片网盘地址!
  • 使用chkrootkit对系统进行rootkit扫描
  • H.264编码格式和视频编码的一些基本概念
  • 电脑报合订本_1998年电脑报合订本截图回忆二
  • Java_画图软件
  • 《2020年AI、CV、NLP顶会最全时间表!》
  • HTML5锚点教程
  • 友情链接常用代码
  • 最短路径课程设计(安阳旅游导航系统)C语言完整代码
  • 黑客网站大全!都在这了!速看删了真的就没了
  • 青龙面板-快手极速版(每天3块脚本)(废-已不能使用)
  • editplus注册码
  • SAP增强 和VA01相关增强点介绍
  • 土匪头头
  • 智能家居装修怎么布线?智能家居网络与开关插座布置
  • 2021年中国研究生数学建模竞赛C题——帕金森病的脑深部电刺激治疗建模研究
  • Dynamic-Programming(动态规划)最细解题思路+代码详解,顺利拿到OPPO公司Android架构师offer
  • LIBRARY_PATH和LD_LIBRARY_PATH区别
  • C语言详解:函数递归专题
  • Https中间人攻击
  • MeeGo开发常用测试工具及流程
  • ORACLE数据库管理员的职责
  • MySql下载及安装教程
  • 行业云平台:企业数字化转型与创新的加速器
  • CRM设计扫盲:一文读懂CRM,内附海量界面案例
  • 基于单片机的电加热炉温度控制系统设计
  • 2023常用的10款电力电子系统仿真分析软件推荐
  • ssmjava二手书交易系统1rn8a【独家源码】 应对计算机毕业设计困难的解决方案
  • [教程]使用Lite MP4 Tool专业制作MP4(AVC)视频格式 - 指导教程
  • 我,在Web3,赚了100万