博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二分查找
阅读量:5051 次
发布时间:2019-06-12

本文共 805 字,大约阅读时间需要 2 分钟。

二分查找:查找已排序数组中的某个值

算法过程:

将欲查找元素与数组中间值(a[mid])对比,每次查找的数组大小减半。如果欲查找的值存在于数组中,则必定在某次循环中通过a[mid]返回

1 #include 
2 3 int main(void){ 4   int i = 0, mid, key, len; 5   puts("enter the length of string:"); 6   scanf("%d", &len);//这里之后原来有一句getchar();为了执行错误1的语句,消除scanf后留下的换行符 7 8   int a[len]; 9   int lo = 0, hi = len - 1;10   mid = (lo + hi)/2;11   puts("enter a string of sorted number:");12   while(i
a[mid]){23       lo = mid + 1;24       mid = (lo + hi)/2; 25     }26     else{27       printf("the key %d in string a is a[%d]\n", key, mid);28       break;29     } 30   } 31   if(lo>hi)32   puts("key is not found.\n");33   return 0;35 }

查找的次数最多可能为:log2(N)次(N为数组大小),因为查找次数最多时最后一次查找为2个数中的一个,每次查找都排除掉一半的数,2^x = N,x为查找次数

 

转载于:https://www.cnblogs.com/tan-wm/p/8985886.html

你可能感兴趣的文章
后台数组传到前台
查看>>
类型转换
查看>>
检查checkbox是否被选中
查看>>
Makefile Shell 脚本;sed命令
查看>>
win7 装docker
查看>>
利用python爬取海量疾病名称百度搜索词条目数的爬虫实现
查看>>
python3 下的文件输入输出特性以及如何覆盖文件内容和接下去输入
查看>>
linux OA搭建
查看>>
清除远程桌面连接历史记录
查看>>
使用matlab遇到的问题
查看>>
Java中的HashMap遍历和C#的字典遍历
查看>>
21_listview展示数据内容回顾
查看>>
在手机网络情况下,Android的微信页面不能播放背景音乐
查看>>
SpringBoot:第二篇 集成日志lombok
查看>>
【Python】新建自定义个数的自定义长度名字
查看>>
区块链与比特币小结
查看>>
也说python的类--基于python3.5
查看>>
Oracle 存储过程
查看>>
HashMap原理阅读
查看>>
冲刺7
查看>>