YZM 二分查找
YZM 二分查找 |
难度级别:B; 运行时间限制:1000ms; 运行空间限制:256000KB; 代码长度限制:2000000B |
试题描述
|
已知一个严格的上升数列a0,a1,a2,a3,a4...an; 请用二分法查找一个数m;输出查找次数 请注意:角标从1开始! |
输入
|
一个数n
接下来a0,a1,a2,a3,a4...an |
输出
|
输出最少需要查找几次
|
输入示例
|
8 19
4 9 12 19 20 26 29 33 |
输出示例
|
4
|
其他说明
|
输入输出都小于100000
|
1 #include<iostream> 2 using namespace std; 3 int a[10000]; 4 int main() 5 { 6 int n,f,i,left,right,middle; 7 cin>>n>>f; 8 for(i=1;i<=n;i++) cin>>a[i]; 9 left=1; 10 right=n; 11 do{ 12 middle=(left+right)/2; 13 if(f<=a[middle]) 14 right=middle; 15 else left=middle+1; 16 }while(left<right); 17 cout<<left; 18 //system("pause"); 19 return 0; 20 }