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;
    }
  • 相关阅读:
    作业程序
    第十三周完成情况 学生选课管理系统 王杰 孙乾 蔚晓青
    各周任务
    课程设计 学生选课管理 王杰 孙乾 蔚晓青
    第六次作业
    第五次作业
    第四次笔记
    第三次作业
    第二周学习笔记
    JAVA作业
  • 原文地址:https://www.cnblogs.com/tinaluo/p/5300462.html
Copyright © 2011-2022 走看看