




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
南京信息工程大学 数据结构 实验(实习)报告实验(实习)名称 内排序 实验(实习)日期 2012.5.30 得分 指导老师 宣文霞 系 计算机系 专业 网络工程 班级 1 姓名 袁盼 学号 20102300242 1、需求分析(1 )实现直接插入排序算法编写一个程序实现直接插入排序过程,并输出9,8,7,6,5,4,3,2,1,0的排序过程。输出形式例如:初始关键字 9 8 7 6 5 4 3 2 1 0排序次数i=1 8 9 7 6 5 4 3 2 1 0 i=2 7 8 9 6 5 4 3 2 1 0 最后结果: 0 1 2 3 4 5 6 7 8 9(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 #define MAXE 20typedef int KeyType;typedef char InfoType10;typedef struct /*记录类型*/KeyType key; /*关键字项*/InfoType data; /*其他数据项,类型为InfoType*/ RecType;void InsertSort(RecType R,int n) /*对R0.n-1按递增有序进行直接插入排序*/int i,j,k;RecType temp;for (i=1;i=0 & temp.keyRj.key) Rj+1=Rj;/*将关键字大于Ri.key的记录后移*/j-; Rj+1=temp;/*在j+1处插入Ri*/printf( i=%d ,i);/*输出每一趟的排序结果*/for (k=0;kn;k+)printf(%3d,Rk.key);printf(n);void main()int i,k,n=10;KeyType a=9,8,7,6,5,4,3,2,1,0;RecType RMAXE;for (i=0;in;i+)Ri.key=ai;printf(n);printf( 初始关键字 );/*输出初始关键字序列*/for (k=0;kn;k+)printf(%3d,Rk.key);printf(n);InsertSort(R,n);printf( 最后结果 );/*输出初始关键字序列*/for (k=0;kn;k+)printf(%3d,Rk.key);printf(nn);二、希尔排序#include #define MAXE 20/*线性表中最多元素个数*/typedef int KeyType;typedef char InfoType10;typedef struct /*记录类型*/KeyType key; /*关键字项*/ InfoType data; /*其他数据项,类型为InfoType*/ RecType;void ShellSort(RecType R,int n)/*希尔排序算法*/int i,j,d,k;RecType temp;d=n/2;/*d取初值n/2*/while (d0) for (i=d;i=0 & Rj.keyRj+d.key) temp=Rj; /*Rj与Rj+d交换*/Rj=Rj+d;Rj+d=temp;j=j-d;printf( d=%d: ,d);/*输出每一趟的排序结果*/for (k=0;kn;k+)printf(%3d,Rk.key);printf(n); d=d/2; /*递减增量d*/void main()int i,k,n=10;KeyType a=9,8,7,6,5,4,3,2,1,0;RecType RMAXE;for (i=0;in;i+)Ri.key=ai;printf(n);printf( 初始关键字 );/*输出初始关键字序列*/for (k=0;kn;k+)printf(%3d,Rk.key);printf(n);ShellSort(R,n);printf( 最后结果 );/*输出初始关键字序列*/for (k=0;kn;k+)printf(%3d,Rk.key);printf(nn);三、冒泡排序#include #define MAXE 20/*线性表中最多元素个数*/typedef int KeyType;typedef char InfoType10;typedef struct /*记录类型*/KeyType key; /*关键字项*/ InfoType data; /*其他数据项,类型为InfoType*/ RecType;void BubbleSort(RecType R,int n)/*冒泡排序算法*/int i,j,k;RecType temp;for (i=0;ii;j-)/*比较,找出本趟最小关键字的记录*/if (Rj.keyRj-1.key) temp=Rj; /*Rj与Rj-1进行交换,将最小关键字记录前移*/Rj=Rj-1;Rj-1=temp;printf( i=%d ,i);/*输出每一趟的排序结果*/for (k=0;kn;k+)printf(%2d,Rk.key);printf(n); void main()int i,k,n=10;KeyType a=9,8,7,6,5,4,3,2,1,0;RecType RMAXE;for (i=0;in;i+)Ri.key=ai;printf(n);printf( 初始关键字 );/*输出初始关键字序列*/for (k=0;kn;k+)printf(%2d,Rk.key);printf(n);BubbleSort(R,n);printf( 最后结果 );/*输出初始关键字序列*/for (k=0;kn;k+)printf(%2d,Rk.key);printf(nn);四、实现快速排序法#include #define MAXE 20/*线性表中最多元素个数*/typedef int KeyType;typedef char InfoType10;typedef struct /*记录类型*/KeyType key; /*关键字项*/ InfoType data; /*其他数据项,类型为InfoType*/ RecType;void QuickSort(RecType R,int s,int t) /*对Rs至Rt的元素进行快速排序*/int i=s,j=t,k;RecType temp;if (si & Rj.keytemp.key) j-; /*从右向左扫描,找第个关键字小于temp.key的Rj */ if (ij) /*表示找到这样的Rj,Ri、Rj交换*/Ri=Rj;i+; while (ij & Ri.keytemp.key) i+;/*从左向右扫描,找第个关键字大于temp.key的记录Ri */ if (ij) /*表示找到这样的Ri,Ri、Rj交换*/Rj=Ri;j-; Ri=temp;printf( );/*输出每一趟的排序结果*/for (k=0;k10;k+)if (k=i)printf( %d,Rk.key);elseprintf(%4d,Rk.key);printf(n);QuickSort(R,s,i-1); /*对左区间递归排序*/QuickSort(R,i+1,t); /*对右区间递归排序*/void main()int i,k,n=10;KeyType a=6,8,7,9,0,1,3,2,4,5;RecType RMAXE;for (i=0;in;i+)Ri.key=ai;printf(n);printf( 初始关键字);/*输出初始关键字序列*/for (k=0;kn;k+)printf(%4d,Rk.key);printf(n);QuickSort(R,0,n-1);printf( 最后结果 );/*输出初始关键字序列*/for (k=0;kn;k+)printf(%4d,Rk.key);printf(nn);五、实现直接选择排序法#include #define MAXE 20/*线性表中最多元素个数*/typedef int KeyType;typedef char InfoType10;typedef struct /*记录类型*/KeyType key; /*关键字项*/ InfoType data; /*其他数据项,类型为InfoType*/ RecType;void SelectSort(RecType R,int n)/*直接选择排序算法*/int i,j,k,l;RecType temp;for (i=0;in-1;i+) /*做第i趟排序*/k=i;for (j=i+1;jn;j+) /*在当前无序区Ri.n-1中选key最小的Rk */if (Rj.keyRk.key)k=j; /*k记下目前找到的最小关键字所在的位置*/if (k!=i) /*交换Ri和Rk */temp=Ri;Ri=Rk;Rk=temp; printf( i=%d ,i);/*输出每一趟的排序结果*/for (l=0;ln;l+)printf(%2d,Rl.key);printf(n);void main()int i,k,n=10,m=5;KeyType a=6,8,7,9,0,1,3,2,4,5;RecType RMAXE;for (i=0;in;i+)Ri.key=ai;printf(n);printf( 初始关键字 );/*输出初始关键字序列*
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025员工离职终止合同证明
- 2025秋部编版八年级语文上册《野望》教学设计
- 2025企业煤炭购销合同
- 2024-2025学年高中物理 第一章 电磁感应 2 感应电流产生的条件说课稿1 教科版选修3-2
- 本册综合教学设计-2025-2026学年初中化学九年级全一册人教版(五四学制)
- 线缆厂研发费用管理规定
- 2025知识产权许可合同书(合同版本)
- 2025建筑工地瓷砖订购合同模板
- 2025年应用文写作设备租赁合同范例
- 2025合同签订盖章操作指南
- 百度在线朗读器
- 医院消防安全知识培训课件
- 常压储罐日常检查记录表
- 《公共政策学(第二版)》 课件 杨宏山 第1-6章 导论、政策系统-政策执行
- 2024使用林地可行性报告委托编制合同书(范本)
- 教学研究经验总结
- 《马克思主义基本原理概论》试题库含答案(典型题)
- GB/T 43795-2024磁性氧化物制成的磁心机械强度测试方法
- 脑梗取栓护理查房
- 中国古代社会的发展演变过程
- 大学英语四级词汇表(顺序-完整版)
评论
0/150
提交评论