基数排序算法
(1)基本思想:将整数按位数切割成不同的数字,然后按每个位数分别比较。
(2)排序过程:将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后,数列就变成一个有序序列。
(3)代码示例:
/*** 基数排序* @param number 待排序的数组* @param d 表示最大的数有多少位*/
public static void sort(int[] number, int d)
{int k = 0;int n = 1;int m = 1; //控制键值排序依据在哪一位int[][] temp = new int[10][number.length]; //数组的第一维表示可能的余数0-9int[] order = new int[10]; //数组order[i]用来表示该位是i的数的个数while (m <= d) {for (int i = 0; i < number.length; i++) {int lsd = ((number[i] / n) % 10);temp[lsd][order[lsd]] = number[i];order[lsd]++;}for (int i = 0; i < 10; i++) {if (order[i] != 0)for (int j = 0; j < order[i]; j++) {number[k] = temp[i][j];k++;}order[i] = 0;}n *= 10;k = 0;m++;}
}