稳定和不稳定排序详解
参考:https://www.jianshu.com/p/7c03e5eb143c
稳定排序有:插入排序、冒泡排序、归并排序、基数排序
不稳定排序有:选择排序、快速排序、希尔排序、堆排序
稳定排序
插入排序:
-
在一个有序的序列中插入一个数,使插入后的序列保持有序。
-
因为插入的过程中都是从后向前进行查找,遇到小于等于(或大于等于)的数停止寻找,进行插入操作。
-
不改变排序前后相等数值的相对顺序,故使稳定的排序算法。
冒泡排序:
-
冒泡故名思义,数值小的向上飘,数值大的向下沉,向上飘的数遇到的小于等于当前数的值停止,向下沉的数遇到大于等于当前数的数停止,
-
类似于对于向上飘的数有个排序之前在其前面数值相等限制了其向上飘的脚步,原先在俺之下,排序后也在俺之下,向下沉也是同理。故也是稳定的排序算法。
归并排序:
-
将一段序列分为若干个小序列进行排序,排序后的小序列进行合并得到最后的排序结果。
-
主要运用了分治的思想。
- 分成的前后若干个小序列在最后进行合并时本身就包含了前后位置信息,在合并时不改变相同值在排序前后的相对顺序,故归并排序也是稳定排序。
基数排序:
- 按从低到高的相应位的值进行排序,也是稳定排序算法。
排序算法详解:稳定与不稳定

本文详细介绍了稳定排序和不稳定排序的区别。稳定排序包括插入排序、冒泡排序、归并排序和基数排序,它们在排序过程中保持相等元素的相对顺序不变。而选择排序、快速排序、希尔排序和堆排序则是不稳定排序,可能改变相等元素的顺序。例如,快速排序中的基准元素交换可能导致相等元素的位置变化,而堆排序在输出堆顶元素时也可能破坏稳定性。
最低0.47元/天 解锁文章
2435

被折叠的 条评论
为什么被折叠?



