数据结构课程设计
------题目编号:42 排序
姓名:曹靖毅
学号:000000000000
班级:计算机 4 班
日期:2016.5.20
一、设计内容描述
问题描述:实现以下排序
选择排序
冒泡排序
插入排序
箱子排序
基数排序
堆排序
归并排序
快速排序
二、需求(输入、输出、功能、测试数据)
对数组实现以上各种排序,输出排序后的有序数组。
1、选择排序:
输入
n个数的序列a1,a2,a3,...,an。
原序列的一个重排a1*,a2*,a3*,...,an*;,使得a1*=a2*=a3*=...=an*排序算法有很多,包括插入排序,冒泡排序,堆排序,归并排序,选择排序,计数排序,基数排序,桶排序,快速排序等。插入排序,堆排序,选择排序,归并排序和快速排序,冒泡排序都是比较排序,它们通过对数组中的元素进行比较来实现排序,其他排序算法则是利用非比较的其他方法来获得有关输入数组的排序信息。
冒泡排序算法的运作如下:(从后往前)
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。[1]?
算法设计有很多方法。插入排序使用的是增量(incremental)方法;在排好子数组A[1..j-1]后,将A[j]插入,形成排好序的子数组A[1..j];
步骤
从有序数列和无序数列{a2,a3,…,an}开始进行排序;
处理第i个元素时(i=2,3,…,n),数列{a1,a2,…,ai-1}是已有序的,而数列{ai,ai+1,…,an}是无序的。用ai与ai-1,a i-2,…,a1进行比较,找出合适的位置将ai插入;
重复第二步,共进行n-i次插入处理,数列全部有序。
思路
假定这个数组的序是排好的,然后从头往后,如果有数比当前外层元素的值大,则将这个数的位置往后挪,直到当前外层元素的值大于或等于它前面的位置为止.这具算法在排完前k个数之后,可以保证a[1…k]是局部有序的,保证了插入过程的正确性.
箱排序中,箱子的个数取决于关键字的取值范围。若R[0..m-1]中关键字的取值范围是0到m-1的整数,则必须设置m个箱子。因此箱排序要求关键字的类型是有限类型,否则可能要无限个箱子。
以LSD为例,假设原来有一串数值如下所示:73, 22, 93, 43, 55, 14, 28, 65, 39, 81
首先根据个位数的数值,在走访数值时将它们分配至编号0到9的桶子中:
0
1 81
2 22
3 73 93 43
4 14
5 55 65
6
7
8 28
9 39
接下来将这些桶子中的数值重新串接起来,成为以下的数列:81, 22, 73, 93, 43, 14, 55, 65, 28, 39
接着再进行一次分配,这次是根据十位数来分配:
0
1 14
2 22 28
3 39
4 43
5 55
6 65
7 73
8 81
9 93
接下来将这些桶子中的数值重新串接起来,成为以下的数列:14, 22, 28, 39, 43, 55, 65, 73, 81, 93
这时候整个数列已经排序完毕;如果排序的对象有三位数以上,则持续进行以上的动作直至最高位数为止。
LSD的基数排序适用于位数小的数列,如果位数多的话,使用MSD的效率会比较好。MSD的方式与LSD相反,是由高位数为基底开始进行分配,但在分配之后并不马上合并回一个数组中,而是在每个“桶子”中建立“子桶”,将每个桶子中的数值按照下一数位的值分配到“子桶”中。在进行完最低位数的分配后再合并回单一的数组中。
n个关键字序列Kl,K2,…,Kn称为(Heap),当且仅当该序列满足如下性质(简称为堆性质):(1)ki=k(2i)且ki=k(2i+1)(1≤i≤ n/2),当然,这是小根堆,大根堆则换成=号。//k(i)相当于二叉树的非叶子结点,K(2i)则是左子节点,k(2i+1)是右子节点
若将此序列所存储的向量R[1..n]看做是一棵完全二叉树的存储结构,则堆实质上是满足如下性质的完全二叉树:
树中任一非叶子结点的关键字均不大于(或不小于)其左右孩子(若存在)结点的关键字。
【例】关键字序列(10,15,56,25,30,70)和(70,56,30,25,15,10)分别满足堆性质(1)和(2),故它们均是堆,其对应的完全二叉树分别如小根堆示例和大根堆示例所示。
大根堆和小根
您可能关注的文档
- 食用油调查要点.ppt
- 数据结构2第2章:线性表要点.ppt
- 数据结构68要点.ppt
- 数据结构实验题要点.docx
- 数据结构实验一线性表应用要点.ppt
- 数据结构题目选讲要点.ppt
- 数据库ER图习题汇总要点.doc
- 食质2012112077杨波要点.ppt
- 数据库备份要点.doc
- 水文地质_地下水预测与防治要点.ppt
- 广东省广州省实验中学教育集团2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州大学附属中学2025-2026学年八年级上学期奥班期中物理试题(解析版).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(含答案).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(解析版).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 2026《中国人寿上海分公司营销员培训体系优化研究》18000字.docx
- 《生物探究性实验教学》中小学教师资格模拟试题.docx
最近下载
- DL∕T 781-2021电力用高频开关整流模块_PDF解密.docx VIP
- 2025公务员采矿专业测试题及答案.docx VIP
- 【历史】开学第一课课件--2024-2025学年统编版七年级历史下册.pptx VIP
- 大数据技术在企业会计风险管理中的创新应用 .docx VIP
- 新英语900句(中英文).pdf VIP
- 2025最新高一英语单项选择精编500题.docx VIP
- GBT 28259-2012 石油天然气工业 井下设备 井下安全阀.docx VIP
- 项目九 小学科学教学设计与实施.pptx VIP
- 2025年统编版中考语文课内文言文《桃花源记》三年中考试题+模拟题(学生版+解析).pdf VIP
- 山东省日照市2026届高三上学期期末考试政治试卷(含答案).pdf VIP
原创力文档

文档评论(0)