/*
* Copyright (c)2017,烟台大学计算机与控制工程学院
* All rights reserved.
* 文件名称:项目1-1.cbp
* 作 者:孙仁圆
* 完成日期:2017年11月30日
* 版 本 号:v1.0
* 问题描述:验证折半查找算法
* 输入描述:所要查找的数据
* 程序输出:测试数据的位置及数据本身
*/
#include <iostream>
#define MAXL 100
using namespace std;
typedef int KeyType;
typedef char InfoType[11];
typedef struct
{
KeyType key; //KeyType为关键字的数据类型
InfoType data; //其他数据
} NodeType;
typedef NodeType SeqList[MAXL]; //顺序表类型
int BinSearch(SeqList R,int n,KeyType k)
{
int low=0,high=n-1,mid;
while (low<=high)
{
mid=(low+high)/2;
if (R[mid].key==k) //查找成功返回
return mid+1;
if (R[mid].key>k) //继续在R[low..mid-1]中查找
high=mid-1;
else
low=mid+1; //继续在R[mid+1..high]中查找
}
return 0;
}
int main()
{
int i,j;
SeqList R;
KeyType so[]={12,18,24,35,47,50,62,83,90,115,134};
int e=11;
for(j=0;j<11;j++)
R[j].key=so[j];
int result;
cin>>i;
result=BinSearch(R,11,i);
if(result>0)
cout<<"序列中第"<<result<<"个数是"<<i<<endl;
else
cout<<"木有找到"<<endl;
return 0;
}
