深入理解计数排序及其Java实现
计数排序是一种线性时间复杂度的排序算法,其核心思想是通过统计每个元素的出现次数,然后根据统计信息将元素放置到正确的位置。该算法具有较高的性能,尤其适用于一定范围内的整数排序。计数排序的特点包括简单易懂、稳定性好和线性时间复杂度等。然而,由于其需要额外的空间来存储计数数组,对于范围较大的数据集可能会消耗较多内存资源。适用场景主要集中在整数排序领域,特别是当输入数据的范围相对较小时,计数排序的性能表现更为出色。以下是一段简单的Java代码实现计数排序:
public class CountingSort {
public static void countingSort(int[] arr) {
int max = Arrays.stream(arr).max().orElse(0);
int min = Arrays.stream(arr).min().orElse(0);
int range = max - min + 1;
int[] count = new int[range];
int[] output = new int[arr.length];
for (int i : arr) {
count[i - min]++;
}
for (int i = 1; i < range; i++) {
count[i] += count[i - 1];
}
for (int i = arr.length - 1; i >= 0; i--) {
output[count[arr[i] - min] - 1] = arr[i];
count[arr[i] - min]--;
}
System.arraycopy(output, 0, arr, 0, arr.length);
}
}
下载地址
用户评论