package sort;
public class CountSort {
public static final int SIZE = 100;
public static final int MAX = 10000000;
public static int[] arr = new int[MAX];
static {
for (int i = 0; i < MAX; i++) {
arr[i] = (int) (SIZE * Math.random());
}
}
public static void sort() {
int[] temp = new int[SIZE]; //SIZE是数组元素的上界,下界为0
int[] result = new int[arr.length];
for (int i = 0; i < arr.length; i++)
temp[arr[i]]++;
for (int i = 1; i < temp.length; i++) {
temp[i] += temp[i - 1];
}
for (int i = arr.length - 1; i > -1; i--) {
result[temp[arr[i]] - 1] = arr[i];
temp[arr[i]]--;
}
for (int i = 0; i < result.length - 1; i++) {
if (result[i] > result[i + 1]) {
System.err.println("错误");
break;
}
}
System.out.println("OK");
}
public static void main(String[] args) {
sort();
}
}
上下界明确时,效率最高的排序方法package sort;public class CountSort { public static final int SIZE = 100; public static final int MAX = 10000000; public static int[] arr = new int[MAX]; static { for (int i