The running time of counting sort is O(n), and usually, the running time of sorting algorithms will be either O(n^2) or O(n lgn), the reason why counting sort is O(n) is that it doesn't have the comparison.
public static int[] CountingSort(int[] input) {
int max = input[0];
int min = input[0];
for (int i = 1; i < input.length; i++) {
if (input[i] > max) max = input[i];
if (input[i] < min) min = input[i];
}
int[] range = new int[max - min + 1];
int[] tmpArray = new int[input.length];
for (int i = 0; i < input.length; i++) {
range[input[i] - min] += 1;
}
for (int i = 1; i < range.length; i++) {
range[i] += range[i - 1];
}
for (int i = 0; i < input.length; i++) {
tmpArray[range[input[i] - min] - 1] = input[i];
range[input[i] - min]--;
}
for (int i = 0; i < input.length; i++) {
input[i] = tmpArray[i];
}
return range;
}
本文介绍了一种线性时间复杂度的排序算法——计数排序。该算法通过统计每个元素出现的次数来完成排序,适用于一定范围内的整数排序。文章详细展示了计数排序的实现过程,并提供了完整的Java代码。
1333

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



