折半查找算法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

折半查找

折半查找也称二分查找,但它要求查找表必须是顺序结构存储且表中数据元素按关键码有序。折半查找在查找成功时,所进行的关键码比较次数至多为⎡⎤)1(log 2+n 。平均查找长度为1)1(log 2-+=n ASL ,时间复杂度是)(log 2n O 。

折半查找的程序代码如下:

#include

#define MAXSIZE 10

typedef int DataType;

typedef struct S_T{

DataType data[MAXSIZE];

int length;

}S_T;

void CreateS_T(S_T *t){

int i;

cout<<"请输入要建立的顺序表的长度"<

cin>>t->length;

t->data[0]='z';

for(i=1;i<=t->length;i++)

cin>>t->data[i];

}

int Binary_Search(S_T *t,DataType kx){

int low,high,mid;

int count;

int flag;

low=1;

count=1;

high=t->length;

flag=0;

while(low<=high){

mid=(low+high)/2;

if(kxdata[mid])

high=mid-1;

else

if(kx>t->data[mid])

low=mid+1;

else{

flag=mid;

break;

}

count++;

}

cout<<"查找的次数是:"<

return flag;

}

void main(){

int i;

DataType kx;

S_T *t=new S_T;

CreateS_T(t);

cout<<"请输入要查找的的元素:"<

cin>>kx;

i=Binary_Search(t,kx);

if(i==0)

cout<<"找不到所要查找的元素!"<

else

cout<<"所要查找的数据元素"<

相关文档
最新文档