1 #include <stdio.h> 2 #define MAX 1000 3 4 //prototypes 5 int BinarySearch(int a[],int high,int low); 6 7 int main() 8 { 9 int x[MAX]={-2,2,4,7,8};//x[i]=i+1; 10 int low=0; 11 int high=4; 12 int result=BinarySearch(x,high,low); 13 printf("%d\n",x[result]); 14 } 15 16 int BinarySearch(int a[],int high,int low) 17 { 18 while(low<=high) 19 { 20 int mid=low+(high-low)/2; 21 if(a[mid]==mid+1) 22 return mid; 23 else if(a[mid]>mid+1) 24 high=mid-1; 25 else 26 low=mid+1; 27 } 28 return -1; 29 }
寻找脚码----2013年2月24日
原创
©著作权归作者所有:来自51CTO博客作者NeilHappy的原创作品,请联系作者获取转载授权,否则将追究法律责任
题目来自:《C语言精选名题百则技巧篇》
问题描述:已知一个整数数组x[],其中的元素彼此都不相同,而且也已经从小到大排列好。请用比较大小,相等的方式编写一个程序,找出给定的数组中是否有一个元素满足x[i]==i(注意:在代码中是从0开始索引的,也就是x[0]是第一个数,所以对应于代码也就是x[i]==i+1)的关系。举例而言,如果x[]={-2,-1,3,7,8},x[3]=3,因此3就是答案。
思路:利用x[]中的元素彼此都不相同而且从小到大排列,可以用二分查找法。代码很简单。
如果你觉得我的文章对你有帮助,请赞一下,非常感谢!
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
2020年7月24日
今天学习完成了java第二章第十一小节,在学习过程中没有遇到什么问题,明天计划学习第二章的本章小结。
2020年7月24日 java -
2020年8月24日
今天学完了java第六章第四五节,在学习过程中没有遇到什么问题,明天计划学习完第六章。
2020年8月24日 java -
2017年12月24日
朋友送我苹果,对着苹果发呆的一天。。。。
p2p wpf linq -
2018年1月24日
结账完了。。。。。。
p2p wpf linq 慢慢地我也过来了