十大经典排序算法

个人小结:

不稳定排序种类为4种:

  1. 快速排序(核心思想是partition操作+二分法分而治之),平均时间复杂度nlogn
  2. 希尔排序(进阶版的插入排序,先把间隔较远的子序列排序,最后间隔为1时,等同于插入排序(插入排序在序列有序时,时间复杂度常数级,所以先让子序列总体有序,能有效降低时间复杂度)),平均时间复杂度n^1.3
  3. 选择排序(每次从后面所有元素挑一个最大/最小的元素放前面,这样前面有序元素数量就逐渐增多,后面无序元素数量逐渐减少),平均时间复杂度n^2
  4. 堆排序(堆本质就是完全二叉树(满二叉树是一种特殊的完全二叉树),同zhankai时堆的子节点key总是小于/大于父节点(大根堆/小根堆),堆排序就是不停地用剩余的无序元素构建小根堆/大根堆,然后不停拿走父节点(用最后一个叶节点放到父节点位置),不停地重构堆,重复这个过程),平均时间复杂度nlogn

稳定排序有6种:

  1. 冒泡排序(每一趟冒泡把最大/最小的元素放到容器末尾),平均时间复杂度n^2
  2. 插入排序(前面有序,后面无序,每次把后面元素往前面插入),平均时间复杂度n^2,元素基本有序时,该算法可达常数时间复杂度
  3. 归并排序(分而治之,数组中间分开,左右各自归并排序,在把结果merge,merge的时候,需要比较左右队列的有序元素),平均时间复杂度 nlogn
  4. 计数排序(统计待排序元素的最大、最小范围,用一个数组作为计数工具,待排序元素值作为数组的下标index,数组对应该index的value作为该元素出现的次数,最后再把数组内容平铺展开) ,平均时间复杂度n+k,其排序速度快于任何比较排序算法。当k不是很大并且序列比较集中时,计数排序是一个很有效的排序算法。
  5. 桶排序(升级版的计数排序,利用某一hash函数,把待排序元素映射到每个桶中,然后每个桶各自排好序,在平铺展开),时间复杂度n+k
  6. 基数排序:没咋看

参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值