数据结构课程设计综合排序.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PAGE 17 PAGE  滨江学院 数据结构 课程设计 题 目 综合排序 院 系 计算机系 年级班级 13计科2 学生姓名 李柯江 学 号 20132308049 学 期 2014-2015(二) 任课教师 黄 群 二O一五年 五月 二十 日 1需求分析 1.1 任务与分析 任务: 利用随机函数产生N个随机整数(20000以上),对这些数进行多种方法进行排序。 要求: 至少采用三种方法实现上述问题求解(提示,可采用的方法有插入排序、希尔排序、起泡排序、快速排序、选择排序、堆排序、归并排序)。并把排序后的结果保存在不同的文件中。 统计每一种排序方法的性能(以上机运行程序所花费的时间为准进行对比),找出其中两种较快的方法。 分析: 本系统实现了几种常用的排序方法,包括:插入排序、起泡排序、快速排序(递归、非递归)、堆排序。 1.2 功能模块的划分 1.2.1 输入模块 利用随机函数产生N个随机整数(20000以上),个数由用户自己输入。 1.2.2输出模块 输出排序前或排序后的数据元素到屏幕显示,并且输出按照选择的算法排序后的数据元素到文件中保存。 1.2.3输出结论 比较不同排序时间长短,输出两种最快的排序方法。 1.2.4排序模块 插入排序 思路:设有一组关键字{K1,K2,…….,Kn},排序开始变认为K1是一个有序的序列,让K2插入到表长为1的有序序列,使之成为一个表长为2的有序序列, 让K3插入到表长为2的有序序列,使之成为一个表长为3的有序序列,依次类推,最后让Kn插入上述表长为n-1的有序序列,得到一个表长为n的有序序列. 冒泡排序 如果有n个数,则要进行n-1趟比较。在第1趟比较中要进行n-1次两两比较,在第j趟比较中要进行n-j次两两比较 简单选择排序 通过n-I次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i个记录交换之 2概要设计 2.1程序结构框图 综合排序系统 寻找最快排序 简单选择排序 气泡排序 插入排序 开始 产生随机函数 2.2程序流程图开始 选择选取数 产生随机函数 插入排序 起泡排序 寻找最快排序 退出 简单选择排序 输出 2.3头文件 #includestdio.h #includestdlib.h #includecstdlib #includetime.h 2.5各种操作函数: (1)创建一个数组函数: (2)输出数组函数: ( 3 ) 简单选择排序 (4)插入排序函数: (5)起泡排序函数: (6)时间函数:start = clock();end = clock(); 2.6主函数 Void main() { 接受命令(选择要执行的操作); 处理命令; 输出结果; } 3 详细设计 #includestdio.h #includestdlib.h #includetime.h #define N 30001 void main() { int i,j,n,k; int n1,t; int a[N],b[N],c[3],d[3]; clock_t start,finish; int time1,time2,time3; 输入设计 printf(*************************数据结构排序综合**************************\n); printf(\n输入要产生的随机数个数:); scanf(%d,n); srand((unsigned)time(NULL)); for(i=0;in;i++) a[i]=rand(); //插入排序 for(i=0;in;i++) b[i]=a[i]; printf(\n); printf(\t插入排序\n); printf(\n); start=clock(); for(i=1;in;i++) //依次插入数字到它前面已经排好序的数字中去 { t=b[i]; j=i-1; while(b[j]t j=0) { b[j+1]=b[j]; j--; } if(j!=(i-1)) //第i个数字比前面的都大,不需要重新插入 { b[j+1]=t; } } for(i=n

文档评论(0)

宝贝计划 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档