排序稳定性的意义

版权声明:本文为博主原创文章,但部分内容来源自互联网,大家可以随意转载,点赞或留言均可! https://blog.csdn.net/csdn_kou/article/details/82965310

首先,为什么会有排序算法稳定性的说法?只要能排好不就可以了吗?

看例子
第1行是数字2 记作 1 2
第2行是数字4 记作 2 4
第3行是数字2 记作 3 2

在这里插入图片描述

排序后的结果(如果看不懂命令的意思,参照这个博客
在这里插入图片描述

那么引入我们的问题,有没有可能排序结果是这样子

在这里插入图片描述

排序的结果是正确的,可是它却打乱了原本的文件顺序。

那么在什么场景会出现这种情况呢?

我们在管理数据的时候,比如有ID和体重。那么胖的排前面,轻的排后面,没问题!如果是体重相等呢?那就按服从ID排序了!

起始稳定排序的意义就是保证两次排序结果相同,好好体会这句话的意义。

快速排序和归并排序的平均时间复杂度都是一样的,那为什么不全部都用归并排序?

归并排序需要开辟额外的空间,在数据较小时,可能不占优势。

数组长度 快速排序(运行时间/毫秒) 归并排序(运行时间/毫秒)
100 0 0
1000 1 1
10000 1 3
100000 14 14
1000000 79 120
10000000 982 1186
100000000 55733 12328
算法 最坏时间复杂性 平均时间复杂性
快速排序 n^2 n*log(n)
归并排序 n*log(n) n*log(n)

猜你喜欢

转载自blog.csdn.net/csdn_kou/article/details/82965310