public static int[] CountSort(int[] arr, int max) {
// 额外开辟一个数组,存储数组中的元素(最大值为新数组的长度)
int[] extra_arr = new int[max + 5];
// 遍历新数组的指针
int extra_count = 0;
// 遍历原数组,如果新数组中没有原数组的元素,就置为0,否则,+1统计次数
for (int i = 0; i < arr.length; i++) {
if (extra_arr[arr[i]] == -1) {
extra_arr[arr[i]] = 0;
}
extra_arr[arr[i]]++;
}
// 遍历新数组,新数组中的元素个数如果大于0,则将对应的值赋值给原数组,并且计数器减1
for (int i = 0; i < extra_arr.length; i++) {
while (extra_arr[i] > 0) {
arr[extra_count++] = i;
extra_arr[i]--;
}
}
return arr;
}
计数排序
最新推荐文章于 2025-05-14 13:28:31 发布