输入一个数组,输入要查找的值,进行二分搜索,这里使用递归,时间复杂度为O(logn)
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
using namespace std;
const int M = 1000000;
int s[M];
int bs(int *s,int low,int high,int x)
{
if(low>high)
return -1;
int middle = (low+high)/2;
if(x==s[middle])
return middle;
else if(x<s[middle])
return bs(s,low,middle-1,x);
else if(x>s[middle])
return bs(s,middle+1,high,x);
}
int main()
{
int x,n,t;
cin>>n;
for(int i=0;i<n;i++)
cin>>s[i];
cin>>x;
t = bs(s,0,n-1,x);
if(t==-1)
cout<<"没找到"<<endl;
else
cout<<"找到了,是第"<<t+1<<"个位置上的数"<<endl;
return 0;
}