查找算法的实现

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

实验六查找算法的实现

姓名:学号:日期:

一、实验目的:

1.熟悉查找的特点

2.熟悉顺序查找和折半查找的基本算法及实现

二、实验条件:

1.硬件:一台微机

2.软件:Windows操作系统和C语言系统(MS VC++6.0)

三、实验方法:

确定存储结构后,上机调试实现顺序查找和折半查找运算。

四、实验要求:

1.编写函数实现顺序查找和折半查找功能

2.编写程序实现以下功能

(1) 创建一个结构体数组;

(2) 调用查找函数,对某一关键字实现顺序查找;

(3) 对于无序关键字表,调用函数先进行排序,然后实现折半查找。

五、算法流程图:

六、实验算法:

#include

#define MAX 100

struct element

{

int key;

int otherterm;

};

typedef struct element DATATYPE;

DATATYPE A[MAX];

int len,k; /*定义各个全局变量*/

int seqsearch() /*顺序查找函数*/

{

int i;

i=1;

while(A[i].key!=k)

i++;

if(i<=len)

return i;

else

return -1;

}

int binsearch() /*折半查找函数*/

{

int low,mid,high;

low=1;

high=len;

while(low<=high)

{

mid=(low+high)/2; /*折半*/

if(k==A[mid].key)

return mid;

else if(k>A[mid].key)

low=mid+1;

else

high=mid-1;

}

return -1;

}

main()

{

int i,f;

int p,q,t;

int r;

A[0].key=1; /*结构体数组从下标“1”开始,对下标“0”赋值*/

printf("初始化关键字:(0为结束符)\n");

for(i=1;A[i-1].key!=0 && i

scanf("%d",&(A[i].key));

; /*预留空语句,此处可以对结构体其他部分赋值*/

}

len=i-1; /*确定结构体数组元素个数*/

printf("\n请输入查询关键字:\n");

scanf("%d",&k);

printf("请输入查找方式:(1、顺序 2、折半)\n");

scanf("%d",&f); /*选择查找方式*/

if(f==1)

r=seqsearch();

if(f==2)

{

for(p=1;p<=len;p++) /*利用简单选择排序进行升序排列*/

for(q=p;q

{

if(A[q].key

{

t=A[q].key;A[q].key=A[p].key;A[p].key=t;

}

}

r=binsearch();

}

if(r==-1)

printf("\n查找失败!\n");

else

printf("\n在表中第%d位(顺序查找时为初始位置;折半查找时为升序排列后的位置)\n",r); }

七、程序介绍:

1、本程序可以实现对于结构体数组(实际意义可以是表)按照关键字进行查找。

2、用户可以选择查找方式:顺序查找或者排序后折半查找。

3、程序在结构体输入处预留空语句,增加程序可移植性

八、效果图:

九、实验心得:

关于数据结构和查找排序的c语言实验较简单,收获不大;而数据库部分实验的实用性较大,且以前接触不多。因此希望可以多进行数据库内容的实验。

相关文档
最新文档