1、基数排序是一种借助多关键字排序的思想对单逻辑关键字进行排序的方法。
2、算法的伪代码和排序方法如下所示(其中方法是实现对整数的排序方式)。
// 基数排序的伪代码
// RadixSort()
// for d = 1 to 最长数字的最左边数字所在的位置
// 根据第d位数字将所有的数字分别分配到堆0至堆9中;
// 将所有证书放进一个数组中;
public static void radixsort(int[] data){
int d, j, k, factor;
int radix = 10;
int digits = 10;
Queue[] queues = new Queue[radix];
//创建子队列,存放堆
for(d = 0; d < radix; d++)
queues[d] = new Queue();
for(d = 1, factor = 1; d <= digits; factor *=radix, j++){
for(j=0; j < data.length; j++)
//此处对下标处理的比较好。即将data[j]插入到对应的子队列中
queues[(data[j]/factor)%radix].enqueue(new Integer(data[j]));
}
for(j = k = 0; j < radix; j++){
while(!queues[j].isEmpty()){
//收集所有子堆(队列)中的元素放入到data[K++]中
data[k++] = ((Integer)queues[j].dequeue()).intValue();
}
}
}
3、基数排序的时间是线性的O(n),空间复杂度是O(n+radix),属于稳定的排序方法。
另外,对于位的连接,用逻辑与运算符&来取代对整数中的除法。