码迷,mamicode.com
首页 > 其他好文 > 详细

折半查找

时间:2015-12-16 15:26:01      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:

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

 

折半查找

标签:

原文地址:http://www.cnblogs.com/fengyanlover/p/5051099.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!