计数排序(Counting Sort)是一种非比较排序算法,它的核心思想是统计待排序序列中每个元素出现的次数,然后根据元素出现次数进行排序。计数排序的时间复杂度为 O(n+k),其中 n 是待排序序列的长度,k 是序列中元素的取值范围。
下面是 Java 代码实现计数排序的示例:
javaCopy codepublic static void countingSort(int[] arr) { int max = Arrays.stream(arr).max().orElse(0); int min = Arrays.stream(arr).min().orElse(0); int k = max - min + 1; int[] count = new int[k]; for (int i = 0; i < arr.length; i++) { count[arr[i] - min]++; } for (int i = 1; i < count.length; i++) { count[i] += count[i - 1]; } int[] sorted = new int[arr.length]; for (int i = arr.length - 1; i >= 0; i--) { sorted[--count[arr[i] - min]] = arr[i]; } System.arraycopy(sorted, 0, arr, 0, arr.length); }
上述代码实现了计数排序,其中:
max
min
k
count
原文链接:codingdict.net