使用python实现基数排序,基数排序也是非比较的排序方法,并且它也是基于桶排序的。
基数排序的原理在于把数字按照不同的位切分,首先排序最后一位,然后排序倒数第二位,一直到排序最高位。因为最高位是最重要的,所以放在最后。
基数排序的缺点在于不能处理小数和负数。相对于计数排序和桶排序,基数排序的优点在于当数据的分布不均匀的时候,占用的空间更少。
算法步骤
Step 1: 获取最大位数,确定循环次数
Step 2: 设置10个桶,因为0-9只有10个数
Step 3: 每次循环排序1个位数
算法举例
排序【1,3,9,408,5,11,101,306】,发现最大的位数是3。
第一次排序: 排个位数
【【】,【1,11,101】,【】,【3】,【】,【5】,【306】,【】,【408】,【9】】
组合:【1,11,101,3,5,306,408,9】
第二次排序: 排十位数
【【1,101,3,5,306,408,9】,【11】,【】,【】,【】,【】,【】,【】,【】,【】】
组合:【1,101,3,5,306,408,9,11】
第三次排序: 排百位数
【【1,3,5,9,11】,【101】,【】,【306】,【408】,【】,【】,【】,【】,【】】
组合:【1,3,5,9,11,101,306,408】
排序结束。
算法评价
基数排序的空间复杂度是 O ( n + k ) O(n+k) O(n+k),其时间复杂度无论输入数据如何都是 O (