折半查找

来源:互联网 发布:js引用js文件 编辑:程序博客网 时间:2024/04/28 03:23
 #include<iostream.h>
#include<malloc.h>
#define max 30//顺序表元素最大数
typedef struct
{
 int key;//关键字项
}RedType;
typedef struct
{
 RedType r[max];//r[0]闲置或用作哨兵单元
}SqList;
int N=10;
int search_bin(SqList &L,int key);//函数声明
void main()
{  
 SqList L;
 int key;
 for(int i=1;i<=N;i++)//生成递增序列1~N
 { 
  cin>>L.r[i].key;//按递增输入
  cout<<L.r[i].key<<" ";//输出递增序列
 }
 cout<<endl;
 cout<<"请输入一个要查找的关键字:"<<endl;
 cin>>key;//要查找的关键字
 cout<<"查找的位置为:"<<search_bin(L,key)<<endl;//若为零则表示没有查找到
 
}
int search_bin(SqList &L,int key)//折半查找算法
{
 int low=1,high=N,mid;
 while(low<=high)
 {
  mid=(low+high)/2;
  if(L.r[mid].key==key)return mid;
  else if(L.r[mid].key>key)high=mid-1;
  else low=mid+1;
 }
 return 0;
}
原创粉丝点击