排序算法的稳定性及其汇总


1.时间复杂度为O(n^2)排序的稳定性:原序列中相同的值,在排好顺序之后,能够保证原来的相同的值相对顺序保持不变。在一个算法中,如果所有相同值,在排完序之后,值的顺序不会被打乱,那么这个算法就是稳定的。如果会被打乱,那么这个排序就不具备稳定性。 如果在相等情况下也进行交换,那么冒泡排序就不是稳定的了。 冒泡排序可以实现为稳定的,插入排序可以实现为稳定的,选择排序不能实现稳定的算法。

2.时间复杂度O(nlogn)算法。归并排序可以做到稳定性,遇到相等的情况下拷贝左边的,保证右边的想等值不会跑到右边就可以做到稳定性。快速排序不能实现稳定性。堆排序做不到稳定性。

3.工程中的综合排序算法。

  (1)在工程中,会先判断数组中的值是基础类型(基础类型会用快排)还是对象类型(就需要用到比较器,使用归并排序),但是如果数组很短,不选选择快排,也不会选择归并,会直接用插入排序。

4.有关排序问题的补充:

  (1)归并排序的额外空间复杂度可以变成O(1),但是非常难。

5.认识比较器的使用。

  

  

优质内容筛选与推荐>>
1、Python中expected an indented block
2、html基本结构
3、Js特效 旋转的文字
4、纯CSS制作下拉菜单,有点意思
5、Civil 3D 二次开发 翻转曲面高程分析颜色


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号