数据结构——排序算法整理

本文整理了排序算法,包括跨苏排序、快速排序、堆排序、归并排序和基数排序。跨苏排序在平均时间性能上最优,而基数排序适用于关键字较小且n值很大的序列。稳定性和时间复杂度是衡量排序算法的重要指标,基数排序和简单排序(如直接插入排序)是稳定的,而快速排序和堆排序等则不稳定。
摘要由CSDN通过智能技术生成

目录

排序整理

排序方法平均时间最坏情况辅助存储
简单排序O(n^2)O(n^2)O(1)
快速排序O(nlogn)O(n^2)O(logn)
堆排序O(n^lognO(nlogn)O(1)
归并排序O(nlogn)O(nlogn)O(n)
基数排序O(d(n+rd))O(d(n+rd))O(rd)
*O(n^2)O(n^2)O(1)
*O(n^2)O(n^2)O(1)
*O(n^2)O(n^2)O(1)

其中基数排序的d是关键字数目。

(1)从平均时间性能而言,跨苏排序最佳其所需要时间最省,但快速排序在最坏情况下的时间性能不如堆排序和归并排序。而后两者相比较的结果是,在n较大时,归并排序所需时间较堆排序省,但它所需要的辅助存储量最多。
(2)上表中的“简单排序”包括除希尔排序之外的所有插入排序,起泡排序和简单选择排序,其中以直接插入排序最为简单,当序列中的记录“基本有序”或n值较小时,它是最佳的排序方法,因此常将它和其它的排序方法,诸如快速排序、归并排序等结合在一起使用。$$$$
(3)基数排序的时间复杂度也可以写成O(d·n)。因此,它最适用于n值很大而关键字较小的序列。若关键字也很大,而序列中大多数记录的“最高位关键字均不同”,则亦可先按“最高位关键字”不同将序列分成若干“小”的子序列,而后进行直接插入排序。
(4)从方法的稳定性来比较,基数排序是稳定的内排方法,所有时间复杂度为O(n^2)的简单排序法也是稳定的。然而快速排序、堆排序和希尔排序等时间性能较好的排序方法都是不稳定的。一般来说,排序过程中的“比较”是在“相邻的两个记录关键字”间进行的排序是稳定的。值得提出的是,稳定性是由方法本身决定的,对不稳定的排序方法而言,不管其描述形式如何,总能举出一个说明不稳定的实例来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值