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 }

 

posted @ 2016-08-20 14:50  LZHEHE  阅读(190)  评论(0编辑  收藏  举报