当前位置:文档之家› 查找与排序实验报告

查找与排序实验报告

实验四:查找与排序
【实验目的】
1.掌握顺序查找算法的实现。

2.掌握折半查找算法的实现。

【实验内容】
1.编写顺序查找程序,对以下数据查找37所在的位置。

5,13,19,21,37,56,64,75,80,88,92
2.编写折半查找程序,对以下数据查找37所在的位置。

5,13,19,21,37,56,64,75,80,88,92
【实验步骤】
1.打开VC++。

2.建立工程:点File->New,选Project标签,在列表中选Win32 Console
Application,再在右边的框里为工程起好名字,选好路径,点OK->finish。

至此工程建立完毕。

3.创建源文件或头文件:点File->New,选File标签,在列表里选C++ Source
File。

给文件起好名字,选好路径,点OK。

至此一个源文件就被添加到了你刚创建的工程之中。

4.写好代码
5.编译->链接->调试
#include "stdio.h"
#include "malloc.h"
#define OVERFLOW -1
#define OK 1
#define MAXNUM 100
typedef int Elemtype;
typedef int Status;
typedef struct
{
Elemtype *elem;
int length;
}SSTable;
Status InitList(SSTable &ST )
{
int i,n;
ST.elem = (Elemtype*) malloc (MAXNUM*sizeof (Elemtype)); if (!ST.elem) return(OVERFLOW);
printf("输入元素个数和各元素的值:");
scanf("%d\n",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&ST.elem[i]);
}
ST.length = n;
return OK;
}
int Seq_Search(SSTable ST,Elemtype key)
{
int i;
ST.elem[0]=key;
for(i=ST.length;ST.elem[i]!=key;--i);
return i;
}
int BinarySearch(SSTable ST,Elemtype key)
{
int low,high,mid;
low=1;
high=ST.length;
while(low<=high)
{
mid=(low+high)/2;
if(ST.elem[mid]==key)
return mid;
else if(key<ST.elem[mid])
high=mid-1;
else
low=mid+1;
}
return 0;
}
void main()
{
int key;
SSTable ST;
InitList(ST);
printf("输入查找的元素的值:");
scanf("%d",&key);
Seq_Search(ST,key);
printf("查找的元素所在的位置:%d\n",Seq_Search(ST,key));
printf("输入查找的元素的值:");
scanf("%d",&key);
BinarySearch(ST,key);
printf("查找的元素所在的位置:%d\n",BinarySearch(ST,key));
}
【实验心得】
这是本学期的最后一节实验课,实验的内容是查找与排序。

在老师的指导下,同学们相互探讨,很快就完成了任务。

虽然课程结束了,但是它教给了我很多东西。

实验前,对书本知识的理解;试验中,独立思考的能力和思考的方式;实验后,及时的复习和总结等。

这些实验也增强了我的沟通能力,动手能力,理论在现实中的应用能力。

这些都是在书本上学不到的知识,我受益匪浅。

相关主题