时间复杂度
平均、最优、最差:O(n*k)
空间复杂度
O(n+k)
java代码
import java.util.ArrayList;
import java.util.Arrays;
public class Sort {
public static void radixSort(int[] arr){
int max = arr[0];
for (int i=1;i<arr.length;i++){
if (arr[i]>max){
max = arr[i];
}
}
for (int place = 1; max/place > 0; place*=10){
ArrayList<ArrayList<Integer>> buckets = new ArrayList<>();
for (int i=0;i<10;i++){
buckets.add(new ArrayList<Integer>());
}
for (int i:arr){
int index = i / place % 10;
buckets.get(index).add(i);
}
int index = 0;
for (ArrayList<Integer> bucket: buckets){
for (int i: bucket){
arr[index++] = i;
}
}
}
}
public static void main(String[] args) {
int[] list = {321, 1234, 543, 324, 24, 960, 540, 672, 783, 1000};
radixSort(list);
System.out.println(Arrays.toString(list));
}
}