我们先来看看几种排序的结构图:
排序是否稳定
比如:
排序前:2 5 7 6 4 2 9 3
排序后:2 2 3 4 5 6 7 9
排序前蓝2在红2前面,排序后蓝2依然在红2前面,则所用的排序方法是稳定的。
如果排序后,红2有可能在蓝2前面,那么所用的排序方法是不稳定的
下面说说前面几种排序的时间复杂度,不懂的话可以这么来想:
简直冒 快归队希尔
简:简单选择(直接选择)
直:直接插入
冒:冒泡
快:快速
归:归并
队:堆
再来看看这张表:
整理:
稳定性 | 排序方法 |
| 时间复杂度 |
| 空间复杂度 |
|
| 最好 | 平均 | 最坏 | 辅助空间 |
不 | 简 | n2 | n2 | n2 | 1 |
稳 | 直 | n | n2 | n2 | 1 |
稳 | 冒 | n | n2 | n2 | 1 |
|
|
|
|
|
|
不 | 快 | nlog2n | nlog2n | n2 | nlog2n |
稳 | 归 | nlog2n | nlog2n | nlog2n | n |
不 | 堆 | nlog2n | nlog2n | nlog2n | 1 |
不 | 希尔 | n | n1.3 | n2 | 1 |
稳 | 基数 |
|
|
|
|
平均一样的放在一起,这样看起来也方便了很多。