查找与排序实验报告

  • 格式:doc
  • 大小:44.50 KB
  • 文档页数:4

下载文档原格式

  / 4
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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));

}

【实验心得】

这是本学期的最后一节实验课,实验的内容是查找与排序。在老师的指导下,同学们相互探讨,很快就完成了任务。

虽然课程结束了,但是它教给了我很多东西。实验前,对书本知识的理解;试验中,独立思考的能力和思考的方式;实验后,及时的复习和总结等。这些实验也增强了我的沟通能力,动手能力,理论在现实中的应用能力。这些都是在书本上学不到的知识,我受益匪浅。