二分法

来源:互联网 发布:linux echo的用法 编辑:程序博客网 时间:2024/05/16 15:22
二分法,先排序,在查找
#include<iostream>#include<cstdlib>using namespace std;int cmp ( const void *a, const void *b ){    return *(int *) a - *(int *) b;}int findit(int k,int que[],int n){    int a=0,b=n-1,mid=0;    if(n<=0)        return -1;    while(a<=b)    {        mid=(a+b)/2;//定义mid作为基准        if(que[mid]==k)            return mid;        else if(que[mid]>k)            b=mid;        else            a=mid+1;    }    return -1;}int main(){    int que[10]={12,13,14,16,18,19,24,34,11,65};    for(int i=0;i<10;i++)            cout<<que[i]<<endl;//排序前    qsort(que,10,sizeof(int),comp);    cout<<endl;    for(int i=0;i<10;i++)            cout<<que[i]<<endl;//排序后        int key;    cin>>key;//关键字    int num=findit(key,que,10);    if(num!=(-1))        cout<<"the number is at "<<num<<endl;    else        cout<<"no found"<<endl;    return 0;}

0 0
原创粉丝点击