YTU 2852: 二分查找
Posted wx62f237590ad0d
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了YTU 2852: 二分查找相关的知识,希望对你有一定的参考价值。
2852: 二分查找
时间限制: 1 Sec
内存限制: 128 MB
提交: 215
解决: 79
题目描述
输入不多于20个升序排列的整数,以及一个待查找的数key,输出key在序列中的位置(从0开始计位序)。查找采用二分查找的方法进行,请将下面的程序补充完整。
#include <iostream>
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<<index<<endl;
else
cout<<"NO"<<endl;
return 0;
//提交全部程序代码
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
样例输入
45
23 36 45 76 81 88 89 91
样例输出
2
你 离 开 了 , 我 的 世 界 里 只 剩 下 雨 。 。 。
#include <iostream>
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<<index<<endl;
else
cout<<"NO"<<endl;
return 0;
//提交全部程序代码
int binary_search(int arr[], int n, int k)
int i=-1;
int low=0,high=n-1,mid;
while(low<=high)
mid=low+(high-low)/2;
if(arr[mid]==k)
i=mid;
break;
else if(arr[mid]>k)
high=mid-1;
else
low=mid+1;
return i;
以上是关于YTU 2852: 二分查找的主要内容,如果未能解决你的问题,请参考以下文章
HDU - 2852 KiKi's K-Number(树状数组+二分)