数据结构第八次 实验.docx
- 文档编号:22825706
- 上传时间:2023-04-28
- 格式:DOCX
- 页数:16
- 大小:365.76KB
数据结构第八次 实验.docx
《数据结构第八次 实验.docx》由会员分享,可在线阅读,更多相关《数据结构第八次 实验.docx(16页珍藏版)》请在冰豆网上搜索。
数据结构第八次实验
淮海工学院计算机科学系
实验报告书
课程名:
《数据结构》
题目:
查找、排序的应用实验
班级:
软件111
学号:
姓名:
排序、查找的应用实验报告要求
1目的与要求:
1)查找、排序是日常数据处理过程中经常要进行的操作和运算,掌握其算法与应用对于提高学生数据处理能力和综合应用能力显得十分重要。
2)本次实验前,要求同学完整理解有关排序和查找的相关算法和基本思想以及种算法使用的数据存储结构;
3)利用C或C++语言独立完成本次实验内容或题目,程序具有良好的交互性(以菜单形式列出实验排序和显示命令,并可进行交互操作)和实用性;
4)本次实验为实验成绩评定主要验收内容之一,希望同学们认真对待,并按时完成实验任务;
5)本次实验为综合性实验,请于2012年12月23日按时提交实验报告(纸质报告每班10份);
6)下周开始数据结构课程设计,务必按时提交实验报告,任何同学不得拖延。
2实验内容或题目
题目:
对记录序列(查找表):
{287,109,063,930,589,184,505,269,008,083}分别实现如下操作:
1)分别使用直接插入排序、冒泡排序、快速排序、简单选择排序、堆排序(可选)、链式基数排序算法对纪录序列进行排序,并显示排序结果;
2)对上述纪录列表排好序,然后对其进行折半查找或顺序查找;
3实验步骤与源程序
#include
#include
#include
#include
#defineMAXSIZE20
#defineOK1
#defineTRUE1
#defineFALSE0
typedefintKeyType;//整型
typedefstruct
{
KeyTypekey;
}RecordType;
typedefstruct
{
RecordTyper[MAXSIZE+1];
intlength;
}RecordList;
voidinitrecord(RecordList*l)
//还原输入序列
{//287,109,063,930,589,184,505,269,008,083
l->r[1].key=287;
l->r[2].key=109;
l->r[3].key=63;
l->r[4].key=930;
l->r[5].key=589;
l->r[6].key=184;
l->r[7].key=505;
l->r[8].key=269;
l->r[9].key=8;
l->r[10].key=83;
}
intCreate(RecordList*l)
{
intk;
for(inti=1;i<=l->length;i++)
{cout<<"请输入第"<
cin>>k;
l->r[i].key=k;
}
cout<<"打印表"< for(intz=1;z<=l->length;z++) cout< returnOK; }//创建顺序表 voidInsSort(RecordList*l) //直接插入排序 { intj; for(inti=2;i<=l->length;i++) { l->r[0].key=l->r[i].key; j=i-1; while(l->r[0].key { l->r[j+1].key=l->r[j].key; j=j-1; } l->r[j+1].key=l->r[0].key; } cout<<"打印表"; for(intm=1;m<=l->length;m++) cout< cout< } voidBubbleSort(RecordList*l) //冒泡排序 { inti,j,x; intchange=TRUE; for(i=1;i<=l->length&&change;++i) { change=FALSE; for(j=1;j<=l->length-i;++j) if(l->r[j].key>l->r[j+1].key) { x=l->r[j].key; l->r[j].key=l->r[j+1].key; l->r[j+1].key=x; change=TRUE; } } cout<<"打印表"; for(intm=1;m<=l->length;m++) cout< cout< } intQKPass(RecordList*l,intleft,intright) //一次快速排序 { intx=l->r[left].key; intlow=left; inthigh=right; while(low { while(low high--; if(low { l->r[low].key=l->r[high].key; low++; } while(low low++; if(low { l->r[high].key=l->r[low].key; high--; } } l->r[low].key=x; returnlow; } voidQKSort(RecordList*l,intlow,inthigh) //快速排序 { intpos; if(low<=high) { pos=QKPass(l,low,high); QKSort(l,low,pos-1); QKSort(l,pos+1,high); } } voidSelectSort(RecordList*l) //简单选择排序 { intn=l->length; for(inti=1;i<=n-1;++i) { intk; k=i; for(intj=i+1;j<=n;++j) if(l->r[j].key if(k! =i) { intx; x=l->r[i].key; l->r[i].key=l->r[k].key; l->r[k].key=x; } } cout<<"打印表"; for(intm=1;m<=l->length;m++) cout< cout< } intSeqSearch(RecordList*l) { intk; cout<<"顺序查找请输入你要查找的值"; cin>>k; inti; l->r[0].key=k; i=l->length; while(l->r[i].key! =k) i--; return(i); }//基于顺序结构的查找法 intBinSrch(RecordList*l) { intlow=1,high=l->length; intk; cout<<"折半查找请输入你要查找的值"; cin>>k; intmid; while(low<=high) { mid=(low+high)/2; if(k==l->r[mid].key)return(mid); elseif(k else low=mid+1; } return(0); }//折半查找 voidmain() { intf=1; intm; inte; chars; intlocate1;//顺序查找返回值 intlocate2;//折半查找返回值 RecordList*l; l=(RecordList*)malloc(sizeof(RecordList)); l->length=10;//表长 //287,109,063,930,589,184,505,269,008,083 while(f) { system("CLS"); cout<<"你想实现什么功能? "< cout<<"---------------------"< cout<<"1顺序表的创建"< cout<<"2直接插入排序"< cout<<"3冒泡排序"< cout<<"4快速排序"< cout<<"5简单选择排序"< cout<<"6顺序查找"< cout<<"7折半查找"< cout<<"---------------------"< cout<<"输入操作序号: "< cin>>s; switch(s) { case'1': Create(l); cout<<"构造顺序表成功! "< getch(); break; case'2': InsSort(l); getch(); break; case'3': cout<<"进行还原: "< initrecord(l); for(e=1;e<=l->length;e++) cout< cout< getch(); BubbleSort(l); getch(); break; case'4': cout<<"进行还原: "< initrecord(l); for(e=1;e<=l->length;e++) cout< cout< QKSort(l,1,10); getch(); cout<<"打印表"; for(m=1;m<=l->length;m++) cout< cout< getch(); break; case'5': cout<<"进行还原: "< initrecord(l); for(e=1;e<=l->length;e++) cout< cout< getch(); SelectSort(l); getch(); break; case'6': locate1=SeqSearch(l); cout<<"在表中的位置是"< getch(); break; case'7': locate2=BinSrch(l); cout<<"在表中的位置是"< getch(); break; } } } //注意getch函数的应用 4测试数据与实验结果(可以抓图粘贴) 5结果分析与实验体会 每次做实验都会发现不足,这次实验就发现对8进制数处理的困难,对指针的运用不到位,传值和传址理解不透。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构第八次 实验 数据结构 第八