顺序查找和折半查找

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

实验目的及要求:

了解和掌握静态查找表的查找过程;

掌握顺序查找算法;

掌握折半查找算法

要求完成静态查找表的顺序查找和折半查找算法的实现。实验设备环境及要求:

PC机一台,内存要求128M以上,VC++6.0集成开发环境。实验内容与步骤:

1、在VC++6.0环境中新建一个工程和C++文件;

2、实现静态查找表的顺序查找和折半查找算法,代码如下:#include

#include

typedef int KeyType;

typedef struct{

KeyType key;

//InfoType data;

}ElemType;

typedef struct{

ElemType *elem;

int length;

}SSTable;

int Search_Sq(SSTable ST,KeyType key){

ST.elem[0].key=key;

for(int i=ST.length;ST.elem[i].key!=key;--i);

return i;

}

int BinSearch(SSTable ST,KeyType key){

int low,high,mid;

low=1;

high=ST.length;

while(low<=high){

mid=(low+high)/2;

if(ST.elem[mid].key==key) return mid;

else if(ST.elem[mid].key>key) high=mid-1;

else low=mid+1;

}

return 0;

}

void main(){

KeyType a[]={0,13,24,35,32,65,19,7,74,20,38};

SSTable T;

T.elem=(ElemType *)malloc(11*sizeof(ElemType));

T.length=10;

for(int i=1;i<=10;i++)

T.elem[i].key=a[i];

printf("要找的元素的位置为%d\n",Search_Sq(T,35));

SSTable S;

S.elem=(ElemType *)malloc(11*sizeof(ElemType));

S.length=10;

KeyType b[]={0,2,4,6,8,10,12,14,16,18,20};

for(int k=1;k<=10;k++)

S.elem[k].key=b[k];

printf("要进行折半查找的元素的位置为%d\n",BinSearch(S,14));

}

实验指导与数据处理:

实验结果:要找的元素的位置为3

要进行折半查找的元素的位置为7

分析讨论:

本次实验通过对静态查找表的顺序查找和折半查找算法的实现,加深了对静态查找表查找过程的理解,并且熟悉了VC++6.0集成环境,虽然在调试过程中遇到一些问题,但经分析后达到了预期的结果。

相关文档
最新文档