排序算法的稳定性

基数排序:各位、十位、百位进行排序

大部分的只是带着理解去记忆,因为你会忘记的。因为东西太多了,而且深入的就理解不了了
对排序的分析:时间、空间、稳定性

直接插入排序:
标准的等差数列,时间复杂度也就是O(N^2)
没有开额外的空间,空间复杂度为O(1)
稳定


关于稳定性:记住,稳定性不是说在不同的数据样本中效率会波动
稳定性是指:相同的值,相对顺序不变
举个例子,例如一组数据有100个,其中有两个数据都是5
稳定性就是,原始数据中的前面的5和后面的5,在排序过后的序列,相对顺序依旧不变,就是稳定性
因为,在现实的生活中,比较的就不仅仅是数据,还需要考虑其他的因素

希尔排序:
时间复杂度:O(N^1.3)
空间复杂度:O(1)
不稳定
为什么不稳定?因为相同的值可能会分在不同组,预排序的时候就会打乱相对顺序

选择排序:每一次选出最小的和最大的放在最左边和最右边
时间:O(N^2)
空间复杂度:O(1)
不稳定
例如,9 9 5 的时候,9的相对顺序就会改变 


堆排序:数组建立二叉树结构,上下调整大小堆
时间:O(N * log N) 
空间:O(1)
不稳定
例如,2 2 2 1 0 建立的大堆,要进行升序排序,由于是父亲大于等于孩子,所以,是左孩子还是右孩子都有可能,导致位置发生变化

冒牌排序:
时间:O(N^2)
空间:O(N^2)
稳定(相同的数不交换)


快速排序:选key,小的在左边,大的在右边
时间:O(N *n logN)
空间:O(logN) 因为,最多开到递归最底层的空间数,往回的时候就不再开辟空间,时间是累积,空间不累积
因此,递归的空间复杂度主要看深度
不稳定
主要是key,会改变相同值的相对顺序 5  5   .....   5   

归并排序:
时间:O(N * log N)
空间:O(N) 要开一个tmp用来拷贝数据
稳定,取小的尾插,相等的也尾插,如果有相等的值,也会是左边区间的先进来,然后才是右边区间,相对顺序不改变

  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二十5画生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值