YTU 2852: 二分查找
2852: 二分查找
时间限制: 1 Sec
内存限制: 128 MB
提交: 215
解决: 79
题目描述
输入不多于20个升序排列的整数,以及一个待查找的数key,输出key在序列中的位置(从0开始计位序)。查找采用二分查找的方法进行,请将下面的程序补充完整。
#include using namespace std; const int SIZE=20; int binary_search(int arr[], int n, int k); int main() { int d[SIZE]; int index, key, num=0; cin>>key; while(cin>>d[num]) num++; index = binary_search(d, num, key); if(index >= 0) cout<代码 int binary_search(int arr[], int n, int k) { int i=-1; int low=_____(1)_____,high=_____(2)_____,mid; while(low<=high) { mid=______(3)________; if(arr[mid]==k) { i=mid; break; } else if(_____(4)_____) high=mid-1; else _______(5)__________; } return i; }
输入
先输入要查找的数 下一行输入升序排列的若干整数(不超过20个),以CTRL-Z结束
输出
若要查找的数在序列中,输出其在序列中的位置(从0开始计数),若不能找到,输出NO
样例输入
4523 36 45 76 81 88 89 91
样例输出
2
你 离 开 了 , 我 的 世 界 里 只 剩 下 雨 。 。 。
#include using namespace std;const int SIZE=20;int binary_search(int arr[], int n, int k);int main(){ int d[SIZE]; int index, key, num=0; cin>>key; while(cin>>d[num]) num++; index = binary_search(d, num, key); if(index >= 0) cout<k) high=mid-1; else low=mid+1; } return i;}
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
暂时没有评论,来抢沙发吧~