实验五 查找与排序.docx
- 文档编号:26661627
- 上传时间:2023-06-21
- 格式:DOCX
- 页数:9
- 大小:63.01KB
实验五 查找与排序.docx
《实验五 查找与排序.docx》由会员分享,可在线阅读,更多相关《实验五 查找与排序.docx(9页珍藏版)》请在冰豆网上搜索。
实验五查找与排序
本科学生综合性实验报告
(封面)
项目组长_郑慧乐___学号_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 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表示。 六、指导教师评语及成绩: 评语: 指导教师依据学生的实际报告内容,用简练语言给出本次实验报告的评价和价值 成绩: 指导教师签名: 批阅日期
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验五 查找与排序 实验 查找 排序
![提示](https://static.bdocx.com/images/bang_tan.gif)