C、C++ 折半查找

来源:互联网 发布:统计重复数据的个数 编辑:程序博客网 时间:2024/06/16 16:45

折半查找法又称为二分搜索。
首先,数据记录的关键词必须是有序排列的。
基本思想是:减小查找序列的长度,分而治之的进行关键词的查找。
查找过程是:先确定待查找记录的所在范围,然后逐渐缩小的查找的范围,直至找到该记录为止(也有可能查找失败)。
例:代码:

#include<iostream>using namespace std;int search(int key[],int n,int k){    int low=0,high=n-1,mid;    while(low<=high)    {        mid=(low+high)/2;        if(key[mid]==k)            return mid;//查找成功,返回mid         if(k>key[mid])            low=mid+1;  //在后半序列中查找         else            high=mid-1; //在前半序列中查找     }    return -1;//查找失败,返回-1 }int main(){    int a[11]={1,3,5,6,9,12,13,17,21,28,30};    int x=search(a,11,28);    if(x!=-1)        cout<<x<<" "<<a[x];    else        cout<<"无此数据!"; }
0 0
原创粉丝点击