1 简介
计数排序统计小于等于该元素值的元素的个数i,于是该元素就放在目标数组的索引i位(i≥0)。
2 代码实现
public class SortCount {
public static void main(String[] args) {
int[] arr = {1,4,6,7,5,4,3,2,1,4,5,10,9,10,3};
sortCount(arr, 1, 10);
System.out.println(Arrays.toString(arr));
}
public static void sortCount(int[] arr, int min, int max) {
int len = arr.length;
int[] count = new int[max - min + 1];
for(int i = 0; i < len; i++) {
count[arr[i] - min] += 1;
}
for(int i = 0, index = 0; i < count.length; i++) {
while(count[i]-- != 0) {
arr[index++] = i + min;
}
}
}
}
[1, 1, 2, 3, 3, 4, 4, 4, 5, 5, 6, 7, 9, 10, 10]
3 复杂性分析
- 时间复杂度:O(n)
- 空间复杂度:O(n)