查找算法的实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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++) /*利用简单选择排序进行升序排列*/