import java.util.Arrays;
import java.util.Random;
public class CountSort {
static class Item {
int index;
int num;
}
private static void sort(Item[] items, int bound) {
int n = items.length;
int[] count = new int[bound];
int[] sum = new int[bound];
Item[] cache = Arrays.copyOf(items, n);
for (int i = 0; i < n; ++ i) {
count[items[i].num] ++;
}
sum[0] = count[0];
for (int i = 1; i < bound; ++ i) {
sum[i] = sum[i - 1] + count[i];
}
for (int i = n - 1; i >= 0; -- i) {
items[-- sum[cache[i].num]] = cache[i];
}
}
public static void main(String[] args) {
int n = 10;
Random random = new Random();
Item[] items = new Item[n];
for (int i = 0; i < n; ++ i) {
items[i] = new Item();
items[i].index = i;
items[i].num = random.nextInt(5);
}
Arrays.stream(items).forEach(item -> {
System.out.println(item.index + "->" + item.num);
});
sort(items, 5);
System.out.println("排序后");
Arrays.stream(items).forEach(item -> {
System.out.println(item.index + "->" + item.num);
});
}
}
计数排序
转载
心之所向,素履以往 生如逆旅,一苇以航
本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
上一篇:AC自动机
下一篇:二分图(匈牙利算法)

提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
排序算法之计数排序的优化
排序算法之计数排序的优化
数组 计数排序 最小值 -
110,排序-计数排序
计数排序是一个非基于比较的排序算法,他首先要找到数组的最大值和最小值然后再根据最大值和最小值申请频率表,其实
数组 最小值 计数排序 数组排序 数据 -
java计数排序
计数排序
算法 计数排序 java学习 -
算法——计数排序
计数排序(Counting Sort)是一种线性时间复杂度的排序算法,适用于待排序元素为整数且范围较小的情况。它通过统计每个元素出现
算法 排序算法 数据结构 数组 计数排序