描述
使用折半查找找出目标值所在位置。
输入
一个整数n
n个整数
要找的目标值
输出
要找的目标值在序列中的位置,如果找不到,输出"no answer"
样例输入
样例1输入 3 1 2 3 2 样例2输入 4 1 5 6 8 4
样例输出
样例1输出 2 样例2输出 no answer
代码:
#include<iostream>
#include<cstdio>
int a[110];
using namespace std;
int BinSearch1(int data[],int low,int high,int k)
{
while(low<=high)
{
int mid=(low+high)/2;
if(k<data[mid])
high=mid-1;
else if(k>data[mid])
low=mid + 1;
else
return mid;
}
return 0;
}
int main()
{
int n,k,x;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
cin>>k;
x=BinSearch1(a,1,n,k);
if(x==0)
cout<<"no answer"<<endl;
else
cout<<x<<endl;
return 0;
}