文章插图
一、概述三种时间复杂度是O(n)的线性排序算法:桶排序、计数排序、基数排序 。
二、相似点这三种排序算法都利用了桶的概念,但对桶的使用方法上有明显差异:
- 基数排序:根据键值的每位数字来分配桶;
- 计数排序:每个桶只存储单一键值;
- 桶排序:每个桶存储一定范围的数值;
计数排序只能用在数据范围不大的场景中,如果数据范围k比要排序的数据n大很多,就不适合用计数排序了 。而且,计数排序只能给非负整数排序,如果要排序的数据是其他类型的,要将其在不改变相对大小的情况下,转化为非负整数 。
基数排序对要排序的数据是有要求的,需要可以分割出独立的“位”来比较,而且位之间有递进的关系,如果a数据的高位比b数据大,那剩下的低位就不用比较了 。除此之外,每一位的数据范围不能太大,要可以用线性排序算法来排序,否则,基数排序的时间复杂度就无法做到O(n)了 。
四、复杂度
时间复杂度
空间复杂度
是否稳定
桶排序
O(n)
O(n)
稳定
计数排序
O(n)
O(n+k)
稳定
基数排序
O(k*n)
O(n)
稳定
【数据结构与算法:线性排序比较】
推荐阅读
- 几何算法:矩形碰撞和包含检测算法
- 数据工程师的重要数据结构和算法
- 复变函数与积分变换书 复变函数与积分变换
- 瓷砖好坏有什么区别(好瓷砖与坏瓷砖用起来的区别)
- see是什么意思? seeyou是什么意思?
- 岳云鹏|德云社岳云鹏带家人踏青,与岳嫂的文案引热议,评论区留言真逗乐
- 包粽子的方法和过程 包粽子的方法与步骤
- 林志玲|大瓜!曝林志玲与日籍老公已离婚,此前流出家暴照片,假体被打出
- 哈维尔马丁内斯 哈维马丁内斯
- 明星素颜|开会期间明星的颜值被打回原形,明星与普通人的长相差距多大