折半查找

第一行输入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;
}

 

posted @ 2015-12-16 14:33  Nagihiko  阅读(161)  评论(0编辑  收藏  举报