本文内容是对计数排序的梳理和总结,本文内容包括:
排序算法十大经典方法
需求描述:现在有一组待排序的数字(如下图所示),要求通过计数排序升序排序。
第一步:创建新数组
第二步:计数
第三步:反向填充
如果下图不动,点击这里查看在线的图解
public static void main(String[] args) {
int a[] = {8, 4, 5, 7, 1, 6, 3, 0, 9};
int b[] = countSort(a);
System.out.println(Arrays.toString(b));
}
public static int[] countSort(int[] num) {
// 找最大值和最小值
int max = Integer.MIN_VALUE;
int min = Integer.MAX_VALUE;
for (int i = 0; i < num.length; i++) {
if (num[i] > max) {
max = num[i];
}
if (num[i] < min) {
min = num[i];
}
}
// 创建计数数组
int k = max - min + 1;
int[] count = new int[k];
// 开始计数
for (int i = 0; i < num.length; i++) {
count[num[i] - min] ++;
}
// 反向填充
int index = 0;
for (int i = 0; i < k; i++) {
while (count[i] > 0) {
num[index ++] = i + min;
count[i] --;
}
}
return num;
}
powered by kaifamiao