理学院 课程设计说明书
课 程 名 称: 数据结构与算法A设计实践 课 程 代 码: 6015059
题 目 二: 排序综合 年级/专业/班: 2013/信科/2班 学 生 姓 名: 冯金慧 学 号: 3120130902209 开 始 时 间: 2015 年 12 月 28 日 完 成 时 间: 2016 年 01 月 10 日 课程设计成绩:
学习态度及平技术水平与实际时成绩(30) 能力(20) 创新(5) 说明书撰写质量(45) 总 分(100) 指导教师签名: 年 月 日
西华大学理学院课程设计说明书
数据结构与算法A设计实践任务书
学院名称: 理学院 课程代码:_6015059________ 专业: 信科 年级: 2012
一、 设计题目
排序综合(限最多一人完成)
二、主要内容
利用随机函数产生N个随机整数(20000以上),对这些数进行多种方法进行排序。
三、具体要求及提交的材料
1) 至少采用4种方法实现上述问题求解(提示,可采用的方法有插入排序、希尔排序、起泡排序、快速排序、选择排序、堆排序、归并排序)。并把排序后的结果保存在不同的文件中。 2) 统计每一种排序方法的性能(以上机运行程序所花费的时间为准进行对比),找出其中两种较快的方法。 如果采用4种或4种以上的方法者,可适当加分。 测试数据及测试结果请在上交的资料中写明;
必须上机调试通过按《数据结构课程设计大纲》中的要求完成课程设计报告格式。 设计结束后,每个学生必须上交的材料有:
1 《课程设计报告》打印稿一份 2.课程设计的源代码电子文档一份
四、主要技术路线提示 无 五、进度安排
共计两周时间,建议进度安排如下:
1. 选题,应该在上机实验之前完成 2. 需求分析、概要设计可分配4学时完成 2. 详细设计可分配4学时 4. 调试和分析可分配10学时。 2学时的机动,可提前安排部分提前结束任务的学生答辩
六、 推荐参考资料
1. 2. 3. 4.
冯博琴 等编著,《软件技术基础》(修改版),西安交通大学出版社,1997 严蔚敏 等著,《数据结构》,清华大学出版社,2003 李芸芳 等著,《软件技术基础》(第二版),清华大学出版社,2000 徐孝凯 等著,《数据结构(C语言描述)》,清华大学出版社,2004
5. 指导教师 签名日期 年 月 日 6. 系 主 任 审核日期 年 月 日
西华大学理学院课程设计说明书
目 录
摘 要 ................................................................... 1 2 系统分析 ................................................................ 3
2.1功能需求 ........................................................... 3
2.1.1总体要求 ..................................................... 4 1.4 数据需求 ......................................................... 5 3、详细设计与实现 ......................................................... 5
3.1设计思路 ........................................................... 5 3.2详细编码 ........................................................... 5 3.3实验结果 .......................................................... 15 4.系统测试和结果分析 .................................................... 16
4.1设计测试数据 ...................................................... 16 4.2调试的详细过程 .................................................... 16 5、算法效率的分析 ........................................................ 22
5.1 耗费时间 ......................................................... 22 5.2性能分析 .......................................................... 22 5.3时间效率 .......................................................... 23 总 结 ................................................................... 24 参考文献 ................................................................. 26 附 录 .................................................................... 27
排序综合
摘 要
排序算法是数据结构学科经典的内容,其中内部排序现有的算法有很多种,其中包含冒泡排序,直接插入排序,简单选择排序,希尔排序,快速排序,堆排序等,各有其特点。对排序算法比较的分析可以遵循若干种不同的准则,通常以排序过程所需要的算法步数作为度量,有时也以排序过程中所作的键比较次数作为度量。特别是当作一次键比较需要较长时间,例如,当键是较长的字符串时,常以键比较次数作为排序算法计算时间复杂性的度量。当排序时需要移动记录,且记录都很大时,还应该考虑记录的移动次数。究竟采用哪种度量方法比较合适要根据具体情况而定。在下面的讨论中我们主要考虑用比较的次数作为复杂性的度量。
排序(sorting)是计算机程序设计的一种重要操作,他的功能是将一个数据元素(或记录)的任意序列,重新排列一个按关键字有序的序列。由于待排序的记录数量不同,使得排序过程中涉及的储存器不同,可将排序方法分为两大类:一类是内部排序,指的是待排序记录存放在计算机随机储存器中进行的排序过程;另一类是外部排序,指的是待排序记录的数量很大,以致内存一次不能容纳全部记录,在排序过程中尚需对外存进行访问的排序过程。 内部排序又分为:插入排序、快速排序、选择排序、归并排序和基数排序。其中插入排序又分为:直接插入排序、其他插入排序和希尔排序;选择排序分为:简单选择排序、树形选择排序和堆排序;基数排序又分为:多关键字的排序和链式基数排序。
本次课程设计就是运用VS2010环境编译的程序,首先产生2000个随机数,然后写出几种不同的排序方法分别对产生的随机数进行排序并记录下各种不同法师的排序所耗费的时间,从而找出排序速度比较快的两种方法,并对不同的排序的性能进行了统计与分析。
关键词:随机数,排序,时间效率,时间复杂度,文件操作
1