实验五 查找与排序.docx

上传人:b****3 文档编号:26661627 上传时间:2023-06-21 格式:DOCX 页数:9 大小:63.01KB
下载 相关 举报
实验五 查找与排序.docx_第1页
第1页 / 共9页
实验五 查找与排序.docx_第2页
第2页 / 共9页
实验五 查找与排序.docx_第3页
第3页 / 共9页
实验五 查找与排序.docx_第4页
第4页 / 共9页
实验五 查找与排序.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

实验五 查找与排序.docx

《实验五 查找与排序.docx》由会员分享,可在线阅读,更多相关《实验五 查找与排序.docx(9页珍藏版)》请在冰豆网上搜索。

实验五 查找与排序.docx

实验五查找与排序

本科学生综合性实验报告

 

(封面)

 

项目组长_郑慧乐___学号_0174280____

成员郑慧乐

专业_物联网___班级_173___

实验项目名称_____实验五查找与排序

指导教师及职称___黄淑英_______

开课学期2018至_2019学年_第一_学期

上课时间2018年12月3日

 

学生实验报告

学生姓名

郑慧乐

学号

0174280

同组人:

实验项目

实验五查找与排序

□必修□选修

□演示性实验□验证性实验□操作性实验□综合性实验

实验地点

H113

实验仪器台号

指导教师

黄淑英

实验日期及节次

星期一下午三节课

一、实验目的及要求:

1、目的

1.进一步掌握有序顺序表的折半查找算法。

2.进一步巩固排序的算法,编写对20个及以上的无序数据进行希尔排序和快速排序的实现程序。

2、内容及要求

1.建立一20个及以上数据的有序顺序表,表中可以仅存放记录的关键字,实现对该有序的折半查找算法,测试数据应充分考虑查找成功和查找不成功两种情况。

2.建立一20个及以上数据的无序顺序表,表中可以仅存放记录的关键字,实现对该无序表进行希尔排序,给出每一趟希尔排序的结果。

3.建立一20个及以上数据的无序顺序表,表中可以仅存放记录的关键字,实现对该无序表进行快速排序,给出每一趟快速排序的结果。

2、仪器用具:

DevC++

3、实验方法与步骤:

#include

usingnamespacestd;

#defineOK1

#defineMAXSIZE20

typedefintKeyType;

typedefintInfoType;

typedefstruct

{

KeyTypekey;

InfoTypeotherinfo;

}RedType;

typedefstruct

{

RedTypeR[MAXSIZE+1];

intlength;

}SqList;

intSearch_Bin(SqListST,KeyTypekey)

{

KeyTypelow,high,mid;

low=1;

high=ST.length;

while(low<=high)

{

mid=(low+high)/2;

if(key==ST.R[mid].key)

returnmid;

elseif(key

high=mid-1;

else

low=mid+1;

}

returnOK;

}

voidShellInsert(SqList&L,intdk)

{

inti,j;

for(i=dk+1;i<=L.length;++i)

if(L.R[i].key

{

L.R[0]=L.R[i];

for(j=i-dk;j>0&&L.R[0].key

L.R[j+dk]=L.R[j];

L.R[j+dk]=L.R[0];

}

}

voidShellSort(SqList&L,intdt[],intt)

{

for(intk=0;k

{

ShellInsert(L,dt[k]);

for(inti=1;i<=20;i++)

cout<

cout<

}

}

intPartition(SqList&L,intlow,inthigh)

{

KeyTypepivotkey;

L.R[0]=L.R[low];

pivotkey=L.R[low].key;

while(low

{

while(low=pivotkey)--high;

L.R[low]=L.R[high];

while(low

L.R[high]=L.R[low];

}

L.R[low]=L.R[0];

for(inti=1;i<=20;i++)

cout<

cout<

returnlow;

}

voidQSort(SqList&L,intlow,inthigh)

{

KeyTypepivotloc;

if(low

{

pivotloc=Partition(L,low,high);

QSort(L,low,pivotloc-1);

QSort(L,pivotloc+1,high);

}

}

voidQuickSort(SqList&L)

{

QSort(L,1,L.length);

}

intmain()

{

SqListST,L1,L2;

ST.length=0;

L1.length=L2.length=0;

intdt[3]={7,5,1},dk=10,t=3;

inta,key;

cout<<"请建立20个数据的有序顺序表:

"<

for(inti=1;i<=20;i++)

{

cin>>ST.R[i].key;

ST.length++;

}

for(inti=1;i<=2;i++)

{

cout<<"请输入想要查找的数值(折半查找):

"<

cin>>key;

a=Search_Bin(ST,key);

if(ST.R[a].key==key)

cout<<"数值"<

"<

else

cout<<"数值"<

"<

}

cout<<"请建立20个数据的无序顺序表(输入数值):

"<

for(inti=1;i<=20;i++)

{

cin>>L1.R[i].key;

L1.length++;

}

cout<<"希尔排序结果为:

"<

ShellInsert(L1,dk);

ShellSort(L1,dt,t);

cout<<"请建立20个数据的无序顺序表(输入数值):

"<

for(inti=1;i<=20;i++)

{

cin>>L2.R[i].key;

L2.length++;

}

cout<<"快速排序结果为:

"<

QuickSort(L2);

}

四、实验结果与数据处理:

五、讨论与结论

①InitList(SqList&L)可省,可以把RedType*R改成RedTypeR[MAXSIZE+1];

②for(inti=1;i<=20;i++)

cout<

③折半查找的查找成功与不成功两种形式可以用if表示。

六、指导教师评语及成绩:

评语:

指导教师依据学生的实际报告内容,用简练语言给出本次实验报告的评价和价值

 

成绩:

指导教师签名:

批阅日期

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1