zoukankan      html  css  js  c++  java
  • C++ 折半查找

    静态查找表中折半查找算法的实现

    注意:折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列

    #include<iostream>
    using namespace std;
    #define ENDFLAG 10000
    typedef int KeyType;
    typedef char * InfoType;
    typedef struct
    {
     KeyType key;
     InfoType otherinfo;
    }ElemType;
    typedef struct
    {
     ElemType *R;
     int length;
    }SSTable;
    void CreateSTable(SSTable &ST,int n)
    {
     int i;
     ST.R=new ElemType[n+1];
     cout<<"请输入"<<n<<"个测试数据:";
     for(i=1;i<=n;i++)
      cin>>ST.R[i].key; 
     ST.length=n;
    }
    int Search_Bin1(SSTable ST,KeyType key)
    {
     int low,high,mid;
     low=1;
     high=ST.length;
     while(low<=high)
     {
      mid=(low+high)/2;
      if(key==ST.R[mid].key) return mid;
      else if(key<ST.R[mid].key) high=mid-1;
      else low=mid+1;
     }
     return 0;
    }
    int Search_Bin2(SSTable ST,int low,int high,KeyType key)
    {
     int mid;
     if(low>high) return 0;
     mid=(low+high)/2;
     if(key==ST.R[mid].key) return mid;
     else if(key<ST.R[mid].key) return Search_Bin2(ST,low,mid-1,key);
     else return Search_Bin2(ST,mid+1,high,key);
    }

    void main()
    {
     int n;
     KeyType key;
     SSTable ST;
     cout<<"请输入静态查找表长:";
     cin>>n;
     CreateSTable(ST,n);
     cout<<"请输入待查记录的关键字:";
     cin>>key;
     cout<<"Search_Bin1算法计算的位置为:"<<Search_Bin1(ST,key)<<endl;
     cout<<"Search_Bin2算法计算的位置为:"<<Search_Bin2(ST,1,ST.length,key)<<endl;
    }

    态度成就高度,技术实现梦想
  • 相关阅读:
    DBSCAN算法及sklearn实现
    K-MEANS算法及sklearn实现
    Linux删除有规则文件夹,比如(50-100)
    11.tensorboard网络结构
    10.优化器
    9.正则化
    8.Dropout
    Linux中awk后面的RS, ORS, FS, OFS 含义
    hadoop 客户的的使用
    shell中的>&1和 >&2是什么意思?
  • 原文地址:https://www.cnblogs.com/YY-Xcode/p/4958204.html
Copyright © 2011-2022 走看看