折半查找(c语言)

网友投稿 300 2022-09-02

折半查找(c语言)

折半查找

​​描述​​​​格式​​​​样例​​​​题解及注释​​

描述

给定一个长度为n(n≤10000)的单调递增整数数列,和要查找的整数,利用折半查找算法找到该数据。输出成功找到该数据所需的比较次数;如果查找未成功,则输出0。

比如有序列: 15 25 26 34 40 41 49 57 64 74

要查找25,则查找次数为2次。

再有序列:10 19 24 30 31 41 49 54 57 61 63 65 72 78 83

要查找31,则查找次数为4次。

再有序列: 7 17 20 27 30 38 48 52 55 61 66 72 79 86

要查找17,则查找次数为4次。

上述序列如果要查找60,则应输出0(查找未成功)

格式

输入格式 输入数据为两行,第一行两个整数,第一个整数n表示序列的长度,第二个整数data,表示要查找的数据。第二行是由n个整数组成的单调递增序列。

输出格式 输出一个整数,如果找到数据,则输出找到该数据所花的比较次数;如果没有找到该数据,输出0

样例

输入样例 10 13 9 12 13 19 26 28 29 37 40 43 输出样例 3

题解及注释

#include #include #define maxn 10005int search(int array[],int n,int value)//array[]即使主函数的a数组{ int low,high,mid; low=0; high=n-1; int x=1; while(low<=high) { mid=(low+high)/2;//这里是折半查找的很关键的一布了 if(array[mid]==value) { return x; } else { if(valuearray[mid]) { low=mid+1; } } x++; } return 0;}int main(){ int n,data; int a[maxn]; scanf("%d%d",&n,&data); for(int i=0;i

写于2021年7月22日11:52分

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:生成身份证校验码(c语言)
下一篇:Windows与网络基础:NTFS权限规则和本地安全策略
相关文章

 发表评论

暂时没有评论,来抢沙发吧~