XYNU OJ 1095: 习题6-9 折半查找
来源:互联网 发布:淘宝菲戈体育 编辑:程序博客网 时间:2024/05/16 09:32
1095: 习题6-9 折半查找
时间限制: 1 Sec 内存限制: 12 MB题目描述
有10个整数已按从小到大的顺序排好序,存储在一个数组中,再输入一个数,要求用折半查找法找出该数是数组中的第几个元素(输出该元素的下标即可)。如果该数不在数组中,则输出"Not exist!"
输入
输入数据共2行
第一行10个整数,按从小到大的顺序输入,中间以空格分隔。
第二行1个整数
输出
折半查找所得该数所在数组中的元素下标,单独占一行。
若该数不存在,则输出一行信息 "Not exist!"
样例输入
1 2 3 4 5 6 7 8 9 103
样例输出
2
提示
折半查找法也称为二分查找法,它充分利用了元素间的次序关系,采用分治策略,可在最坏的情况下用O(log n)完成搜索任务。它的基本思想是,将n个元素分成个数大致相同的两半,取a[n/2]与欲查找的x作比较,如果x=a[n/2]则找到x,算法终止。如 果x<a[n/2],则我们只要在数组a的左半部继续搜索x(这里假设数组元素呈升序排列)。如果x>a[n/2],则我们只要在数组a的右半部继续搜索x。
# include<stdio.h>int main(){int n=9,m,i,a[10],j=0,k,s=0;for(i=0;i<10;i++)scanf("%d",&a[i]);scanf("%d",&m);while(1){ s++; k=n; n=(n+j)/2; if(a[n]==m) {printf("%d",n); break; } else if(a[n]<m) j=k;else j=0; if(s==11) {printf("Not exist!"); break; }}return 0;}
阅读全文
1 0
- XYNU OJ 1095: 习题6-9 折半查找
- XYNU OJ 1094: 习题6-6 杨辉三角
- XYNU OJ 1091: 习题6-3 求整型矩阵对角线元素之和
- XYNU OJ 1105: 例题6-9 字符串求最大值
- XYNU OJ 1073: 习题5-3-2 求最大公约数
- XYNU OJ 1120: 习题8-16 整数提取
- C++语言习题 折半查找
- C语言习题折半查找
- C语言习题 折半查找
- C语言习题 折半查找
- OJ函数之折半查找
- C语言习题 折半查找
- 2413: C语言习题 折半查找
- oj2413:C语言习题 折半查找
- XYNU OJ 1101: 例题6-3 冒泡排序
- XYNU OJ 1102: 例题6-4 矩阵转置
- XYNU OJ 1103: 例题6-5 求矩阵最大值
- XYNU OJ 1104: 例题6-8 单词统计
- vc在线程序更新和如何更新更新程序update.exe
- POJ 2411 状压DP||组合数学
- DataGridView美化
- 奥威Power-BI数据可视化分析--客流量分析
- Fiddler plus 【高效调试分析利器】
- XYNU OJ 1095: 习题6-9 折半查找
- loj #6164. 「美团 CodeM 初赛 Round A」数列互质
- 二叉树的遍历
- BZOJ 1030 文本生成器
- 不同局域网内进行网络连接的建立方法
- UVA 221 Urban Elevations(离散化)
- 算法 c语言 shell希尔排序
- Openwrt开发日志——建立一个界面
- validate与submit