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;
    }

    态度成就高度,技术实现梦想
  • 相关阅读:
    C# 保存base64格式图片
    C# 日期比较
    Socket的使用
    地质演变完整事记
    计算机实用的使用技巧
    ebook 电子书项目
    ppt演讲者模式
    IT行业三大定律
    史前生命
    Oracle DataGuard发生归档丢失增量备份恢复备库
  • 原文地址:https://www.cnblogs.com/YY-Xcode/p/4958204.html
Copyright © 2011-2022 走看看