基数排序java代码实现:
public class CardinalitySort {
public static void main(String[] args) {
int[] arr = { 2, 31, 60, 127, 314, 32, 8775, 625, 9, 24, 0, 12 };
cardinalitySort(arr, 10);
for (int i : arr) {
System.out.print(i + ",");
}
}
private static void cardinalitySort(int[] arr, int standard) {
int n = 1;
boolean hasNum = false;
int[][] doubleArr = new int[standard][arr.length];
int[] order = new int[standard];
while (true) {
if (n != 1 && !hasNum) {
break;
}
hasNum = false;
for (int i : arr) {
Double mm = Math.pow(10, n);
int tmp = i / (mm.intValue());
if (tmp != 0) {
hasNum = true;
}
Double mmm = Math.pow(10, n - 1);
int result = (i % (mm.intValue())) / (mmm.intValue());
doubleArr[result][order[result]] = i;
order[result]++;
}
int k = 0;
for (int i = 0; i < standard; i++) {
if (order[i] > 0) {
for (int j = 0; j < order[i]; j++) {
arr[k] = doubleArr[i][j];
k++;
}
}
order[i] = 0;
}
n++;
}
}
}