nefu 899这也是裸的找

#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;

int main()
{
    int n,k;
    while(scanf("%d%d",&n,&k)!=-1)
    {
       int r=1,l=n,mid,sum=0;
       while(r<=l)
       {
           sum++;
           mid=(r+l)/2;
           if(mid==k)  {printf("%d\n",sum);break;}
           if(mid<k) r=mid+1;
           else  l=mid-1;
       }
      
    }
    return 0;
}

 

我们现在都知道二分查找的主体是一个while循环,在每次循环里面进行询问,从而决定是找到了数据停止循环还是改变查找区间的范围。现在就是考验大家是否理解了原理的时候了!
运用二分查找在序列{1,2,3,……,n}中找到k需要循环多少次?

Input

输入多组数据, 每组输入两个整数n和k,占一行(0<= k <= n)。

Output

对每组输入,输出在序列{1,2,3,……,n}中找到k的循环次数。

Sample Input

5 2
5 1
10 3

Sample Output

3
2
3
posted @ 2016-03-17 08:48  邻家那小孩儿  阅读(149)  评论(0编辑  收藏  举报