折半查找
第一行输入n,第二行输入n个有序数,第三行输入待查找数
判断是否能找到,输出查找次数
//折半查找 #include<iostream> using namespace std; int main() { int N,n; cin>>N; int a[N]; for(int i=0; i<N; i++) cin>>a[i]; cin>>n; int flag=0,c=0,h; int s=0; int e=N-1; while(s<=e){ h=(s+e)/2; if(n==a[h]) { flag=1; c++; break; } else if(n<a[h]) { e=h-1; c++; } else if(n>a[h]) { s=h+1; c++; } } if(flag) cout<<"YES "<<c<<endl; else cout<<"NO "<<c<<endl; return 0; }