C语言排列组合课程设计.doc
《C语言排列组合课程设计.doc》由会员分享,可在线阅读,更多相关《C语言排列组合课程设计.doc(15页珍藏版)》请在沃文网上搜索。
1、 目录1、需求分析:42、概要设计43 、运行环境51)、软件环境52)、硬件环境54 开发工具和编程语言55 详细设计56 调试分析127 测试结果12一、测试方法:12二、测试结果:12参考文献15心得体会161、需求分析:排序综合问题,用数据结构的思想对一些数字进行排序,实现以下排序功能:1、插入排序2、冒泡排序3、快速排序4、选择排序5、希尔排序6、归并排序7、堆排序2、概要设计 1、程序总体框架图如下: 排序综合 快 速 排 序 堆 排 序 归 并 排 序 希 尔 排 序 选 择 排 序 冒 泡 排 序 插 入 排 序2、程序中各函数简单说明见如表1函数说明所示:返回值函数名参数表函
2、数说明intmainvoid主函数voidD_InsertRecordType R插入排序voidBubbleSortRecordType R冒泡排序intPartitionRecordType R划分算法voidQuickSortRecordType R 快速排序voidSelectSortRecordType R选择排序voidShellSortRecordType R希尔排序voidMergeSortRecordType R归并排序voidHeapAdjustRecordType R堆排序voidDisplay显示 表1函数3 、运行环境 1)、软件环境操作系统:windows7、win
3、dows8 2)、硬件环境 处理器:Intel Pentium 166MX 或更高内存:64MB硬盘空间:1T显卡:SVGA 显示适配4 开发工具和编程语言编程环境:Dev-C+ 5.0 beta 9.2 (4.9.9.2)编程语言:C语言,ANSI C895 详细设计/*排序综合*/#include#define MAXSIZE 300typedef structint key;char data;RecordType; /*插入排序*/void D_Insert(RecordType R,int n)/对n个记录序列R1Rn进行直接插入排序int i,j;for(i=2;iR0.key)/
4、*将关键字值大于Ri.key()即此时的R0.key的所有Rj(j=i-1,i-2,)顺序后移一个记录位置*/Rj+1=Rj;j-;Rj+1=R0; /*冒泡排序*/void BubbleSort(RecordType R,int n)/对R1Rn这n个记录进行冒泡排序int i,j,swap;for(i=1;in;i+)swap=0;for(j=1;jRj+1.key)/如果Rj.key大于Rj+1.key则交换它俩R0=Rj;Rj=Rj+1;Rj+1=R0;swap=1;if(swap=0)break; /*快速排序*/int Partition(RecordType R,int i,in
5、t j)/划分算法/对RiRj,以Ri为基准记录进行划分,并返回RKi在划分后的正确位置R0=Ri;while(ij)while(i=R0.key)/从左向右扫描查找第一个关键字小于R0.key的记录Rjj-;if(ij)/当i小于j时则Rj.key小于R0.key将Rj交换到表的左端Ri=Rj;i+;while(ij&Ri.key=R0.key)/从左当右扫描查找第一个关键字大于R0.key的记录Rii+;if(ij)Rj=Ri;j-;Ri=R0;return i;void QuickSort(RecordType R,int s,int t)/进行快速排序int i;if(st)i=Par
6、tition(R,s,t);/i为基准记录的位置并由此将表分为RsRi-1和Ri+1Rt两部分QuickSort(R,s,i-1);QuickSort(R,i+1,t); /*选择排序*/void SelectSort(RecordType R,int n) /对于R1Rn这n个记录进行选择排序int i,j,k;for(i=1;in;i+)k=i;for(j=i+1;j=n;j+)if(Rj.keyRk.key)k=j;if(i!=k)R0=Rk;Rk=Ri;Ri=R0; /*希尔排序*/void ShellInsert(RecordType R,int n,int d) /对R1Rn这n个
7、记录进行希尔排序,d为增长因子(步长)int i,j;for(i=d+1;i0&R0.keyRj.key;j=j-d)Rj+d=Rj;Rj+d=R0;void ShellSort(RecordType R,int n)/进行希尔排序int d10,t,k;printf(n输入增量因子的个数n);scanf(%d,&t);printf(由大到小输入每个增量因子:n);for(k=0;kt;k+)scanf(%d,&dk);for(k=0;kt;k+)ShellInsert(R,n,dk); /*归并排序*/void Merge(RecordType R,RecordType R!,int k,i
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
20 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 排列组合 课程设计