排序-基本概念,排序方法的分类,排序方法的比较

文章介绍了排序的基本概念,包括如何将数据元素按关键字顺序排列。接着,详细分类了排序方法,如内部排序与外部排序,稳定排序与非稳定排序,以及各种具体算法如冒泡排序、快速排序和归并排序等。还讨论了不同排序方法的时间和空间性能,并强调了自然排序的概念。
摘要由CSDN通过智能技术生成

排序基本概念

假设有 n个记录的序列为{r1, r2, …, rn},其相应的关键字分别{{k1, k2, …, kn},需确定 1,2,…,n 的一种排序 p1, p2, …, pn ,使其相应的关键字满足kp1 <= kp2 <= … <= kpn 非递减(或非递增)关系,即 使得序列成为一个按关键字有序的序列{rp1, rp2, …, rpn},这样的操作就称为序列.
简单来说:就是将杂乱无章的数据元素,通过一定的方法按关键字顺序排列的过程叫做排序.

在排序问题中,通常将数据元素称为记录

排序方法的分类

按数据存储介质

内部排序:数据量不大,数据在内存,无需内外存交换数据
外部排序:数据量较大,数据在外存

内部排序分为:
• 插入排序:直接插入排序,折半插入排序,希尔排序
• 交换排序:冒泡排序,快速排序
• 选择排序:简单选择排序,堆排序
• 归并排序:2-路归并排序
• 基数排序

按比较器个数

串行排序:单处理机(同一时刻比较一对元素)
并行排序:多处理机(同一时刻比较多对元素)

按主要操作

比较排序: 插入排序, 交换排序,选择排序,归并排序
*归并排序:不比较元素大小,仅仅根据元素本身的取值确定其有序位置

按辅助空间

原地排序:辅助空间用量为O(1)的排序方法(所占的辅助存储空间与参加排序的数据量大小无关)
非原地排序:辅助空间用量超过O(1)的排序方法

按稳定性

稳定排序:能够使任何数值相等的元素,排序后相对次序不变
非稳定排序:非稳定排序方法
例:5, 4,3,2,1,5*

排序后
如果为:1,2,3,4,5,5*
则为稳定排序
如果为:1,2,3,4,5*,5
则为非稳定排序

在这里插入图片描述

按自然性

自然排序:输入数据元素越有序,排序速度越快的排序方法
非自然排序:不是自然排序的方法

各种排序方法的综合比较

1.时间性能
在这里插入图片描述
2.空间性能
注:在下图链式基数排序中,关键码的取值范围为rd
在这里插入图片描述
3.稳定性能
在这里插入图片描述

在这里插入图片描述

注:希尔排序时间复杂度跟增量公式有关,大约来说

希尔排序最好情况最坏情况平均情况
-n1.3n2nlogn~n2

补充

从算法简单性来看:
简单算法:冒泡,简单选择,直接插入
改进算法:希尔,堆,归并,快速

从待排序记录个数来看:
排序记录个数越小,采用简单算法越合适
排序记录个数越大,采用改进算法越合适

从最好情况来看:
冒泡和直接插入更好一点,另4种改进算法反而慢

对于快速排序,如果待排序序列为正序或逆序,那么为最坏情况,一般不用快速排序

排序-插入排序-直接插入,折半插入,希尔排序(C语言)
排序-交换排序-冒泡排序,快速排序,改进快速排序(C语言)
排序- 选择排序-简单选择排序,堆排序(C语言)
排序-归并排序(递归,非递归)(C语言)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mirror_zz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值