输入n值(1<=n<=1000)、n个非降序排列的整数以及要查找的数x,使用二分查找算法查找x,输出x所在的下标(0~n-1)及比较次数。若x不存在,输出-1和比较次数。
输入格式:
输入共三行:
第一行是n值;
第二行是n个整数;
第三行是x值。
输出格式:
输出x所在的下标(0~n-1)及比较次数。若x不存在,输出-1和比较次数。
输入样例:
4
1 2 3 4
1
输出样例:
0
2
#include<bits/stdc++.h>
using namespace std;
int a[1005];
int main(){
int n,i,x,y=0,l,r,k=0,mid;
cin>>n;
for(i=0;i<n;i++)cin>>a[i];
cin>>x;
for(i=0;i<n;i++){
if(x==a[i]){k=1;break;}
}
l=0;r=n-1;
while(l<=r){
y++;
mid=(l+r)/2;
if(a[mid]>x)r=mid-1;
else l=mid+1;
}
if(k==1) cout<<mid<<endl<<y;
else cout<<"-1\n"<<y;
return 0;
}