折半查找

来源:互联网 发布:源码购买平台 编辑:程序博客网 时间:2024/06/03 05:07

折半查找也成二分查找,是一种高效率的算法,算法思路很简单不多说,时间复杂度为O(log2 n)。

#include <iostream>using namespace std;int Search_Bin(int a[],int n,int key){    int low=0,high=n-1;    while(low<=high)    {        int mid=(low+high)/2;        if(a[mid]==key)        {            return mid+1;        }        else if (a[mid]>key)        {            high=mid-1;        }        else if(a[mid]<key)        {            low=mid+1;        }    }    return 0;}    int main()    {        int n,k,a[1005],ans;        while(cin>>n)        {            for(int i=0; i<n; i++)            {                cin>>a[i];            }            cin>>k;            ans=Search_Bin(a,n,k);            if(ans)            {               cout<<ans<<endl; //cout<<"关键字是第"<<ans<<"个数"<<endl;            }            else            {                cout<<"查找失败"<<endl;            }        }        return 0;    }


原创粉丝点击