数据结构关于排序的课程设计.docx
《数据结构关于排序的课程设计.docx》由会员分享,可在线阅读,更多相关《数据结构关于排序的课程设计.docx(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据结构关于排序的课程设计 课程设计说明书 题目:排序算法的运用与分析 姓名: 学号:_ 班级:_ _ _ X X X X大学 数理学院X X X专业 2022 年7 月8 日 目录: 一题目 (5) 二算法设计的思想 (5) 三算法的流程图 (7) 四算法设计分析 (8) 五源代码 (10) 六运行结果与分析 (19) 七总结 (22) 八参考文献 (22) 课程设计报告的内容 一、题目:排序算法比较: 1、设计目的: 1掌握各种排序的基本思想。 2掌握各种排序方法的算法实现。 3掌握各种排序方法的优劣分析及花费的时间的计算。 4掌握各种排序方法所适应的不同场合。 2、设计内容和要求 利用随
2、机函数产生30000个随机整数,利用插入排序、起泡排序、选择排序、快速排序、堆排序、归并排序等排序方法进行排序,并统计每一种排序上机所花费的时间 二、算法设计的思想: 1、冒泡排序:BubbleSort() 基本思想: 设待排序的文件为r1.n 第1趟(遍):从r1开始,依次比较两个相邻记录的关键字:ri.key和ri+1.key,ri。若 keyri+1.key,则交换记录ri和ri+1的位置;否则,不交换。(i=1,2,.n-1) 第1趟之后,n个关键字中最大的记录移到了rn的位置上。 第2趟:从r1开始,依次比较两个相邻记录的关键字:ri.key和ri+1.key,若 ri.keyri+
3、1.key,则交换记录ri和ri+1的位置;否则,不交换。(i=1,2,.n-2) 第2趟之后,前n-1个关键字中最大的记录移到了rn-1的位置上,作完n-1趟,或者不需 再交换记录时为止。 2、选择排序:SelSort() 每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数 列的最后,直到全部待排序的数据元素排完。 选择排序不像冒泡排序算法那样先并不急于调换位置,第一轮(k=1)先从arrayk开始 逐个检查,看哪个数最小就记下该数所在的位置于minlIndex中,等一轮扫描完毕,如果找 到比arrayk-1更小的元素,则把arrayminlIndex和ak-1对调
4、,这时arrayk到最后一个元 素中最小的元素就换到了arrayk-1的位置。如此反复进行第二轮、第三轮直到循环至最 后一元素。 3、直接插入排序:InsSort() 在已经排好序的序列中查找待插入的元素的插入位置,并将待插入元素插入到有序列表 中的过程。 将数组分成两部分,初始化时,前部分数组为只有第一个元素,用来存储已排序元素, 我们这里叫arr1 ;后部分数组的元素为除第一个元素的所有元素,为待排序或待插入元素, 我们这里叫arr2 。 排序时使用二层循环:第一层对arr2 进行循环,每次取后部分数组(待排序数组)里 的第一个元素(我们称为待排序元素或称待插入元素)e1 ,然后在第二层循
5、环中对arr1 (已排好序的数组)从第一个元素往后进行循环,查到第一个大于待插入元素(如果是升序 排列)或第一个小于待插入元素(如果是降序排列)e2 ,然后对arr1 从e2 元素开始往 后的所有元素向后移,最后把e1 插入到原来e2 所在的位置。这样反复地对arr2 进行循 环,直到arr2 中所有的待插入的元素都插入到arr1 中。 4、快序排序:QuickSort() 基本思想:首先在r1.n中,确定一个ri,经过比较和移动,将ri放到中间某个位 置上,使得ri左边所有记录的关键字小于等于ri.key,ri右边所有记录的关键字大于等 于ri.key。以ri为界,将文件划分为左、右两个子文
6、件。 用同样的方法分别对这两个子文件进行划分, 得到4个更小的子文件。继续进行下去, 使得每个子文件只有一个记录为止,便得到原文件的有序文件。 例. 给定文件(20,05,37,08,63,12,59,15,44,08),选用第1个元素20进行划分: 5、归并排序:MegeSort() 假定文件(r1,r2,.,rn)中记录是随机排列的,进行2-路归并排序,首先把它划分为长度 均为1的n个有序子文件,然后对它们逐步进行2路归并排序。其步骤如下: 第1趟:从r1.n中的第1个和第2个有序子文件开始,调用算法merge,每次归并两个相 邻子文件,归并结果放到y1.n中。在y中形成 n/2 个长度为
7、2的有序子文件。若n为 奇数,则y中最后一个子文件的长度为1。 第2趟:把y1.n看作输入文件,将 n/2 个有序子文件两两归并,归并结果回送到 r1.n中,在r中形成 n/2 /2 个长度为4的有序子文件。若y中有奇数个子文件,则r 中最后一个子文件的长度为2。 共计经过 log2n 趟归并,最后得到n个记录的有序文件。 6、堆排序:HeapSort() 堆实质上是满足如下性质的完全二叉树:树中任一非叶结点的关键字均不大于(或不小 于)其左右孩子(若存在)结点的关键字。 1、N(N1)个节点的的完全二叉树从层次从左自右编号,最后一个分枝节点(非叶子节点) 的编号为 N/2 取整。2、且对于编
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 关于 排序 课程设计
限制150内