查找与排序实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验四:查找与排序
【实验目的】
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 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)); } 【实验心得】 这是本学期的最后一节实验课,实验的内容是查找与排序。在老师的指导下,同学们相互探讨,很快就完成了任务。 虽然课程结束了,但是它教给了我很多东西。实验前,对书本知识的理解;试验中,独立思考的能力和思考的方式;实验后,及时的复习和总结等。这些实验也增强了我的沟通能力,动手能力,理论在现实中的应用能力。这些都是在书本上学不到的知识,我受益匪浅。