美文网首页
2.8 分析十种排序算法的稳定性

2.8 分析十种排序算法的稳定性

作者: Aurochsy | 来源:发表于2019-03-22 14:25 被阅读0次

    Chapter2: 查找与排序

    8. 分析十种排序算法的稳定性

    1. 什么是算法的稳定性

    • 稳定

      如果a=b, a原来在b前面, 排序之后a仍然在b前面

    • 不稳定

      如果a=b, a原来在b前面, 排序之后a可能在b之后

    2. 十种排序算法的稳定性

    • 堆排序、快速排序、希尔排序、直接选择排序不是稳定的排序算法;

      比如希尔排序,由于前面进行的是分组的插入排序,两个相等的值可能分再不同的组,进行插入排序后相对的前后位置可能会发生改变

      选择排序是循环选择最小的数直接放在最前面,所以可能会将后面的相同的值直接调到前面(其实如果是从右往左扫描,只有在找到更大值才交换的话,相对位置也是不变的才对呀...(这个问题网上也有争议...)

    • 基数排序、冒泡排序、直接插入排序、折半插入排序、归并排序是稳定的排序算法。

      比如冒泡排序,是比较温和的排序,有两两之间的比较,所以相对顺序不变

      直接插入排序也是,最靠前的无序元素挨个跟前面的有序元素列表比较,找到 >= 它的就插在后面,相对位置也是不变的

    3. 参考资料

    [1] 八大排序算法稳定性分析

    [2] 常见排序算法的分析与实现(10种)

    相关文章

      网友评论

          本文标题:2.8 分析十种排序算法的稳定性

          本文链接:https://www.haomeiwen.com/subject/ngolvqtx.html