原理
- 使用一个额外的数组C,其中第i个元素是待排序数组A中值等于i的元素的个数,然后根据数组C来确定A中数组排到正确的地方
步骤
稳定性:稳定的
- 时间复杂度:
,其中w是待排序数据的值域大小
代码
public void counting_sort(int[] a) {final int MAX = 10000;int[] count = new int[MAX + 1];int[] b = new int[a.length];for (int i = 0; i < a.length; i++) {count[a[i]]++;}for (int i = 1; i < count.length; i++) {count[i] += count[i - 1];}for (int i = a.length - 1; i >= 0; i--) {b[--count[a[i]]] = a[i];}for (int i = 0; i < a.length; i++) {a[i] = b[i];}}
