zoukankan      html  css  js  c++  java
  • 二分查找

    这种查找方法要求查找表的数据是线性结构保存,并且还要求查找表中的数据是按关键字从小到大有序排列的。二分查找是一种递归过程,每折半查找一次,可使查找范围缩小一半,当查找范围缩小到只剩下一个元素,而仍不等于关键字,说明查找失败,在最坏的情况下,折半查找所需要的比较次数为O(nlog2n)..

    #include <iostream>
    using namespace std;
    #define len 10
    int source[]={6,12,28,37,54,65,69,83,90,92};
    int search(int s[],int n,int key)
    {
        int left,right,mid;
        left=0;
        right=n-1;
        while(left<=right)        //查找范围含含至少一个元素 
        {
            mid=(left+right)/2;   
            if(s[mid]==key)     
                return mid;
            else if(s[mid]>key)
                right=mid-1;
            else 
                left=mid+1;
        }
        return -1;
    }
    
    int main()
    {
        int key,i,pos;     
        cout<<"原数据表:"<<endl; 
        for(i=0;i<len;i++)
           cout<<source[i]<<" ";
        cout<<endl;
        cout<<"请输入关键字:";
        cin>>key;  
        pos=search(source,len,key);
        if(pos>=0)
            cout<<"查找成功,该关键字位于数组的第"<<pos+1<<"个位置"<<endl;
        else
            cout<<"查找失败!
    "<<endl;;
        return 0;
    }
  • 相关阅读:
    C#的访问修饰符
    C#的数据类型
    iOS--小结系列八(继续)
    ios--小结系列八 控制器管理
    ios--小结系列八 程序启动原理
    ios--小结系列七 通知机制
    ios--小结系列六继续-UITableViewCell
    ios--小结系列六
    ios--小结系列五
    ios--小结系列四
  • 原文地址:https://www.cnblogs.com/tinaluo/p/5300462.html
Copyright © 2011-2022 走看看