数据结构实验报告同名7971.docx
- 文档编号:30281238
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:12
- 大小:94.42KB
数据结构实验报告同名7971.docx
《数据结构实验报告同名7971.docx》由会员分享,可在线阅读,更多相关《数据结构实验报告同名7971.docx(12页珍藏版)》请在冰豆网上搜索。
数据结构实验报告同名7971
数据结构实验报告(同名7971)
南京信息工程大学数据结构实验(实习)报告
实验(实习)名称内排序实验(实习)日期2012.5.30得分指导老师宣文霞
系计算机系专业网络工程班级1姓名袁盼学号20102300242
1、需求分析
(1)实现直接插入排序算法
编写一个程序实现直接插入排序过程,并输出{9,8,7,6,5,4,3,2,1,0}的排序过程。
输出形式例如:
初始关键字9876543210
排序次数i=18976543210
i=27896543210
……
最后结果:
0123456789
(2)——实现希尔插入排序算法
编写一个程序实现希尔插入排序过程,并输出{9,8,7,6,5,4,3,2,1,0}的排序过程。
(3)实现冒泡排序算法
编写一个程序实现冒泡排序过程,并输出{9,8,7,6,5,4,3,2,1,0}的排序过程。
(4)实现快速排序算法
编写一个程序实现快速排序过程,并输出{6,8,7,9,0,1,3,2,4,5}的排序过程。
(5)实现直接选择排序算法
编写一个程序实现直接排序过程,并输出{6,8,7,9,0,1,3,2,4,5}的排序过程。
2.设计
一、直接插入排序
#include
#defineMAXE20
typedefintKeyType;
typedefcharInfoType[10];
typedefstruct/*记录类型*/
{
KeyTypekey;/*关键字项*/
InfoTypedata;/*其他数据项,类型为InfoType*/
}RecType;
voidInsertSort(RecTypeR[],intn)/*对R[0..n-1]按递增有序进行直接插入排序*/
{
inti,j,k;
RecTypetemp;
for(i=1;i { temp=R[i]; j=i-1;/*从右向左在有序区R[0..i-1]中找R[i]的插入位置*/ while(j>=0&&temp.key { R[j+1]=R[j];/*将关键字大于R[i].key的记录后移*/ j--; } R[j+1]=temp;/*在j+1处插入R[i]*/ printf("i=%d",i);/*输出每一趟的排序结果*/ for(k=0;k printf("%3d",R[k].key); printf("\n"); } } voidmain() { inti,k,n=10; KeyTypea[]={9,8,7,6,5,4,3,2,1,0}; RecTypeR[MAXE]; for(i=0;i R[i].key=a[i]; printf("\n"); printf("初始关键字");/*输出初始关键字序列*/ for(k=0;k printf("%3d",R[k].key); printf("\n"); InsertSort(R,n); printf("最后结果");/*输出初始关键字序列*/ for(k=0;k printf("%3d",R[k].key); printf("\n\n"); } 二、希尔排序 #include #defineMAXE20/*线性表中最多元素个数*/ typedefintKeyType; typedefcharInfoType[10]; typedefstruct/*记录类型*/ { KeyTypekey;/*关键字项*/ InfoTypedata;/*其他数据项,类型为InfoType*/ }RecType; voidShellSort(RecTypeR[],intn)/*希尔排序算法*/ { inti,j,d,k; RecTypetemp; d=n/2;/*d取初值n/2*/ while(d>0) { for(i=d;i { j=i-d; while(j>=0&&R[j].key>R[j+d].key) { temp=R[j];/*R[j]与R[j+d]交换*/ R[j]=R[j+d]; R[j+d]=temp; j=j-d; } } printf("d=%d: ",d);/*输出每一趟的排序结果*/ for(k=0;k printf("%3d",R[k].key); printf("\n"); d=d/2;/*递减增量d*/ } } voidmain() { inti,k,n=10; KeyTypea[]={9,8,7,6,5,4,3,2,1,0}; RecTypeR[MAXE]; for(i=0;i R[i].key=a[i]; printf("\n"); printf("初始关键字");/*输出初始关键字序列*/ for(k=0;k printf("%3d",R[k].key); printf("\n"); ShellSort(R,n); printf("最后结果");/*输出初始关键字序列*/ for(k=0;k printf("%3d",R[k].key); printf("\n\n"); } 三、冒泡排序 #include #defineMAXE20/*线性表中最多元素个数*/ typedefintKeyType; typedefcharInfoType[10]; typedefstruct/*记录类型*/ { KeyTypekey;/*关键字项*/ InfoTypedata;/*其他数据项,类型为InfoType*/ }RecType; voidBubbleSort(RecTypeR[],intn)/*冒泡排序算法*/ { inti,j,k; RecTypetemp; for(i=0;i { for(j=n-1;j>i;j--)/*比较,找出本趟最小关键字的记录*/ if(R[j].key { temp=R[j];/*R[j]与R[j-1]进行交换,将最小关键字记录前移*/ R[j]=R[j-1]; R[j-1]=temp; } printf("i=%d",i);/*输出每一趟的排序结果*/ for(k=0;k printf("%2d",R[k].key); printf("\n"); } } voidmain() { inti,k,n=10; KeyTypea[]={9,8,7,6,5,4,3,2,1,0}; RecTypeR[MAXE]; for(i=0;i R[i].key=a[i]; printf("\n"); printf("初始关键字");/*输出初始关键字序列*/ for(k=0;k printf("%2d",R[k].key); printf("\n"); BubbleSort(R,n); printf("最后结果");/*输出初始关键字序列*/ for(k=0;k printf("%2d",R[k].key); printf("\n\n"); } 四、实现快速排序法 #include printf("\n"); } } voidmain() { inti,k,n=10,m=5; KeyTypea[]={6,8,7,9,0,1,3,2,4,5}; RecTypeR[MAXE]; for(i=0;i R[i].key=a[i]; printf("\n"); printf("初始关键字");/*输出初始关键字序列*/ for(k=0;k printf("%2d",R[k].key); printf("\n"); SelectSort(R,n); printf("最后结果");/*输出初始关键字序列*/ for(k=0;k printf("%2d",R[k].key); printf("\n\n"); } 3、调试分析 实验过程中遇到不少类似变量没有定义和全角,半角的问题,经过C++程序编译指向错误,最终得到解决,通过本次实验,我学到了另外一种处理数据的方法。 4、测试结果
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 实验 报告 同名 7971