数据结构课程设计多种排序

上传人:re****.1 文档编号:507005990 上传时间:2023-12-11 格式:DOC 页数:25 大小:1.44MB
返回 下载 相关 举报
数据结构课程设计多种排序_第1页
第1页 / 共25页
数据结构课程设计多种排序_第2页
第2页 / 共25页
数据结构课程设计多种排序_第3页
第3页 / 共25页
数据结构课程设计多种排序_第4页
第4页 / 共25页
数据结构课程设计多种排序_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《数据结构课程设计多种排序》由会员分享,可在线阅读,更多相关《数据结构课程设计多种排序(25页珍藏版)》请在金锄头文库上搜索。

1、课 程 设 计 说 明 书课程名称: 数据结构课程设计 设计题目: 多种排序 院 系: 计算机科学与信息工程学院 学生姓名: 徐思勇 学 号: 200903010016 专业班级: 09级计科班(应用) 指导教师: 孙高飞 2011年 6 月 8 日课 程 设 计 任 务 书设计题目 多种排序学生姓名徐思勇所在院系计科院专业、年级、班09级计科应用班设计要求:利用随机函数产生N个随机整数(10000以上),对这些数进行多种方法进行排序学生应完成的工作: 1) 采用如下六种方法实现上述问题求解:插入排序、希尔排序、起泡排序、快速排序、选择排序、堆排序。2) 统计每一种排序方法的性能(以上机运行程

2、序所花费的时间为准进行对比),找出其中两种较快的方法。并将数据序列和不同的查找算法的性能结果记录入txt文件。参考文献阅读:1) 清华大学出版社数据结构 编著:严蔚敏 吴伟民 2) 清华大学出版社C程序设计教程 编著:谭浩强 工作计划:1) 两天时间讨论框架,由组长分配任务。2) 三人合作每人解决两种排序方法由组长组合起来。任务下达日期: 2011年 6月 7 日 任务完成日期: 2001年 6月 13日指导教师(签名): 学生(签名): 李志祥多种排序摘 要:本次课程设计所要求的排序方法有插入排序、希尔排序、起泡排序、快速排序、选择排序、堆排序,基本上将我们学习过的排序方法都囊括在内,可以说

3、这次课程设计是对我们学过的排序算法的一个总结和对比。通过实验中各种排序方法所用的时间对比,可以让我们对每种排序方法的性能有一个清晰的认识,有利于我们以后在做某些程序时更好的选择最好的排序方法。关键词:(1)六种排序 插入排序 希尔排序 起泡排序 快速排序选择排序 堆排序 (2) 排序方法的性能关键问题:核心问题: 排列组合数据模型(逻辑结构):30000个随机数存储结构: 保存在不同的文件核心算法: 直接插入、直接选择、冒泡、快速排序、堆排序的算法输入数据: 初始化数组:rand()%50000+1 输出数据:排序内容到文件,排序所用时间目 录1. 设计背景51.1 总设计52.设计方案52.

4、1设计思想52.2主要思想和流程图63方案实施73.1程序的实现73.2主要源代码及说明74结果与结论204.1运行主界面204.2各种排序方法运行结果204.3 运行结论245收获与致谢246参考文献247 附件 241. 设计背景1.1总设计分别实现直接插入排序、希尔排序、直接选择排序、冒泡排序、快速排序、堆排序的算法。从时间的角度来分析各种排序的性能。通过测试多组数据来掌握各种排序的方法及适用场合,并能在解决实际问题灵活运用。在编写代码的时候,有以下几个问题:(1)建立一个主函数,在主函数中要有菜单界面,和输入功能键相应执行的功能。并且要求能循环使用系统。(2)分别实现直接插入排序、希尔

5、排序、直接选择排序、冒泡排序、快速排序、堆排序的算法。(3)通过冒泡排序法来测试每组数据用那种排序算法最优。2.设计方案2.1 设计思想建立一个主函数,在主函数中要有菜单界面,和输入功能键相应执行的功能。并且要求能循环使用系统。分别实现直接插入、直接选择、冒泡、快速排序、堆排序的算法。(1) 直接插入排序的基本思想是基于插入,开始假定第一个记录有序,然后从第二个记录开始,依次插入到前面有序的子文件中。即将记录ai(2=i=n)插入到有序子序列a1.i-1中,使记录的有序序列从a1.i-1变为a1.i ,最终使整个文件有序。共进行n-1趟插入。最坏时间复杂度是0(n2),平均时间复杂度是0(n2

6、),空间复杂度是O(1),是稳定排序。(2) 希尔排序的基本思想是基于分组,先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为d1的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量d2d1重复上述的分组和排序,直至所取的增量dt=1(dtdt-ld2d1),即所有记录放在同一组中进行直接插入排序为止。 (3)直接选择排序的基本思想是基于选择,开始有序序列长度为零,第i(1=in)趟简单选择排序是,从无序序列ai.n的n-i+1记录中选出关键字最小的记录,和第i个记录交换,使有序序列逐步扩大,最后整个文件有序。共进行n-1趟选择。最坏时间复杂

7、度是0(n2),平均时间复杂度是0(n2),空间复杂度是O(1),是不稳定排序。(4)冒泡排序:首先将第一个记录的关键字和第二个记录的关键字进行比较,若为逆序,则将两个记录交换,然后比较第二个记录和第三个记录的关键字。依此类推,直到第N-1和第N个记录的关键字进行过比较为止。上述为第一趟排序,其结果使得关键字的最大纪录被安排到最后一个记录的位置上。然后进行第二趟起泡排序,对前N-1个记录进行同样操作。一共要进行N-1趟起泡排序。(5)快速排序思想:从待排序列中任取一个元素 (例如取第一个) 作为中心,所有比它小的元素一律前放,所有比它大的元素一律后放,形成左右两个子表;然后再对各子表重新选择中

8、心元素并依此规则调整,直到每个子表的元素只剩一个。此时便为有序序列了。(6)堆排序基本思想是:堆是n个元素的序列,先建堆,即先选得一个关键字最大或最小的记录,然后与序列中最后一个记录交换,之后将序列中前n-1记录重新调整为堆(调堆的过程称为“筛选”),再将堆顶记录和当前堆序列的最后一个记录交换,如此反复直至排序结束。优点是在时间性能与树形选择排序属同一量级的同时,堆排序只需要一个记录大小供交换用的辅助空间,调堆时子女只和双亲比较。避免了过多的辅助存储空间及和最大值的比较。2.2 主要算法和流程图输入序号退出显示随机数时间效率比较堆排序快速排序冒泡排序直接选择排序希尔排序直接插入排序结束显示各个排序法对同一组数据排序所用的时间和其中较快的两种方法显示排序后的数据和时间效率 开始 1 2 3 4 5 6 7 8 0

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号