实验五-查找和排序实验报告范文查找及排序实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验五-查找和排序实验报告范文查找及排序实验
-可编辑修改-
-
-可编辑修改-
实验五查找和排序
1、实验目的掌握顺序查找的基本方法
掌握简单排序和二分法查找的算法。
2.能运用线性表的查找方法解决实际问题。
2、实验内容
1、给出在一个无序表A,采用顺序查找算法查找值为某的元素的算法
2、给出一个无序表B,采用简单排序方法使该表递增有序,并采用二分查找算法查找值为某的元素的算法。
3、实验步骤
(1)仔细分析实验内容,给出其算法和流程图;
(2)用C语言实现该算法;
(3)给出测试数据,并分析其结果;
(4)在实验报告册上写出实验过程。
4、实验报告要求
实验报告要求书写整齐,步骤完整,实验报告格式如下:
1、[实验目的]
2、[实验设备]
3、[实验步骤]
4、[实验内容]
5、[实验结果(结论)]
排序创建二叉捌
L「
1折半查找算法描述如下:
intSearch_Bin(SSTableST,KeyTypekey)low=1;high=ST.length; while(low<=high){
mid=(low+high)/2;
ifEQ(key,ST.elem[mid].key)returnmid;
eleifLT(key,ST.elem[mid].key)high=mid-1;
elelow=mid+1;
}
return0;
}//Search_Bin;
2.顺序查找算法描述如下:typedeftruct{
ElemType某elem;
intlength;
}SSTable;
顺序查找:
从表中最后一个记录开始,逐个进行记录的关键字和给定值的比较,若某个记录的关键字和给定值比较相等,则查找成功,找到所查记录;反之,查找不成功。
intSearch_Seq(SSTableST,KeyTypekey){
ST.elme[O].key=key;
for(i=ST.Iength;
!EQ(ST.elem[i].key,key);--i);
returni;}
(3)写出源程序清单(加适当的注释)。
#include"tdio.h"
voidmain()
typedeftructBiTNode{
{
charch;
intdata;
intkey;
tructBiTNode某lchild,某rchild;
BiTree,bt=NULL;
}BiTNode,某BiTree;
inti=0;//建立一个二叉树,元素从键盘输入,
直到回车为止
voidinert(BiTree某bt,BiTree){//在二叉树中插
printf("\n请输入要一列整数,以空格隔开,回车结
入一个新节点,并将较大数至于右子树,较小数至于左子束.\n");
树
while(ch!='\n'){
if(某bt==NULL)某bt=;
canf("%d",&key);
eleif(->data<=(某bt)->data)
=(BiTree)malloc(izeof(BiTNode));
inert(&((某bt)->lchild),);
->data=key;
eleif(->data>(某bt)->data)
->lchild=->rchild=NULL;
inert(&((某bt)->rchild),);
inert(&bt,);
}
ch=getchar();
void
Z某BL(BiTreebt){//中序遍历,二叉树已排好顺}
序
printf("\n排序后:\n”);
if(bt!=NULL){
Z某BL(bt);//中序遍历
Z某BL(bt->lchild);
while(1)
printf("%5d",bt->data);
{
Z某BL(bt->rchild);
printf("\n输入你要查找的关键字:”);
}
canf("%d",&key);
}
=elect(bt,key);
BiTreeelect(BiTreebt,intkey)//在一叉排序树bt if(!=NULL)printf("%d查找成
中查找关键字等于给定值的结点是否存在
功!",->data);
{
eleprintf("未发现你输入的数!");
if(bt==NULL)returnNULL;
printf("\n再次查找(Y/N):");
eleif(bt->data==key)
ch=getch();
returnbt;
if(ch!='y'&&ch!='Y')return0;
eleif(key<bt->data)
}
returnelect(bt->lchild,key);
}
}
elereturnelect(bt->rchild,key);
-
-可编辑修改-
(4)
(4)调试说明。
包括上机调试的情况、调试所遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执
-
-可编辑修改-
行结果进行分析。
1,问题:malloc无法识别
解决:百度得知缺少头文件,导入tdlib.h后解决.
2,问题:输入后程序无响应
解决:canf中缺少&添加后解决
3,问题:结果显示不正确,为ASCII码
解决:输岀改为”%c
(5)测试结果及说明。
对完成所要执行的功能情况分析。
(1)
请输入要一列整数,以空格隔开,回车结束.
12刖5523557812131
非序后:
12239134FEE578121
输入你晏査找的关键字:阴
2S査我旗I加
冃次查找?(Y/W:
输入像要查戏的关键字:4
未发现你输入的数!
再玄查W(V/N):
(2)
谴输入要一列整数,以空格隔开,回车结束.
3112111111L435555
排疼后:
551212
12
12
123131313135111111121
435
输入你要査找的关键字;&5查找成功!再次查我某(Y/N):
五实验体会:
通过本次排序和查找的练习,初步掌握了其基本概念和操作。
查找的基本概念:查找表:是由同一类型的数据元素(或记录)构成的集合。
查找表的操作:
1、查询某个“特定的”数据元素是否在查找表中。
2、检索某个“特定的”数据元素的各种属性。
3、在查找表中插入一个数据元素;
4、从查找表中刪去某个数据元素。
排序:将一个数据元素的无序序列重新排列成一个按关键字有序的序列内部排序:待排序记录存放在计算机随机存储器中进行的排序过程;外部排序:待排序记录的数量很大,以致内存一次不能容纳全部记录,在排序过程中尚需对外存进行访问的排序过程。