基数排序
基数排序(Radix Sort)
基数排序可以看作是桶排序的扩展,主要思想是将整数按位划分。基数排序需要准备10个桶,分别代表09,根据整数个位数字的数值将元素放入对应的桶中,之后按照桶编号从小到大、同桶内保持输入顺序赋值到原序列中,再依次对十位、百位等进行同样的操作。
例如一个待排序的序列:
互动实验
基数:按一位分桶,保持桶内先后顺序
访问权限PRO
PRO EXCLUSIVE探索不止于此
尊享 Pro 权益解锁完整互动实验、进阶解析与精选参考答案。
根据个位数值放入对应的桶中:
将桶中的元素按顺序赋值到原始数组中:
根据十位数值放入对应的桶中:
将桶中的元素按顺序赋值到原始数组中:
本例使用非负十进制整数。每一轮必须保持桶内的输入顺序;d位、基数b的时间复杂度为,辅助空间为。
知识测验
题目
个位排序后,同在个位1桶的1与11,取回时应该怎样处理?
知识测验
题目
只完成个位分桶和取回,能否保证多位整数整体升序?
动手练习
保持两轮分桶的稳定次序
用LSD十进制基数排序处理[42,7,23,12,31,2],不足两位的数视为高位补0。画出个位、十位的各桶内容及每轮写回数组,同桶必须先进先出。