问题:给你n个无序的int整型数组arr,并且这些整数的取值范围都在0-20之间,要你在 O(n) 的时间复杂度中把这 n 个数按照从小到大的顺序打印出来。
public void f(int arr[]) {
int[] temp = new int[21];
for (int i = 0; i < arr.length; i++) {
temp[arr[i]]++;
}
//顺序打印
for (int i = 0; i < 21; i++) {
for (int j = 0; j < temp[i]; j++) {
System.out.println(i);
}
}
}
该博客介绍了如何在一个无序的整数数组中,使用计数排序(Counting Sort)方法在O(n)的时间复杂度内将数组元素按从小到大的顺序打印。这种方法通过创建一个临时计数数组,统计每个值出现的次数,然后依次打印每个值,实现了高效排序。
298

被折叠的 条评论
为什么被折叠?



