第八章 线性时间排序 8.2 计数排序
2014-06-10 22:01
169 查看
package chap08_Linear_Time_Sort; import static org.junit.Assert.*; import java.util.Arrays; import org.junit.Test; public class SortAlgorithms { /** * 计数排序算法 maxvalue为数组中的最大值 * * @param a * @param maxValue */ static void countingSort(int[] a, int maxValue) { // 制作a的副本 int[] b = Arrays.copyOf(a, a.length); // 创建包含从0到最大值maxvalue的数组,用于记录数组a中每个数字出现的次数 int[] c = new int[maxValue + 1]; // 记录次数 for (int i = 0; i < b.length; i++) { c[b[i]]++; } // 将c[i]表示小于i的数字的总数 for (int i = 1; i <= maxValue; i++) { c[i] += c[i - 1]; } // 将数组a中对应的位置填上相应的数字。仔细想想就好了,要从最后一个开始 for (int i = b.length - 1; i >= 0; i--) { a[c[b[i]] - 1] = b[i]; c[b[i]]--; } } @Test public void testName() throws Exception { int[] a = { 13, 19, 9, 5, 12, 8, 7, 4, 21, 2, 6, 11 }; System.out.println(Arrays.toString(a)); countingSort(a, 21); System.out.println(Arrays.toString(a)); } }
相关文章推荐
- 第八章 线性时间排序 8.2 计数排序
- 线性时间排序之计数排序(算法导论8.2)
- 算法导论 第八章:线性时间排序
- 排序及选择算法的java实现(三)计数排序、计数选择、随机选择、最差线性时间选择
- 线性时间排序——计数排序,基数排序,桶排序
- 算法导论 第8章 线性时间排序-计数排序的原址排序
- 排序算法(五)-- 线性时间排序之计数排序
- 【算法导论】线性时间排序之 决策树&计数排序
- [算法学习笔记]线性时间排序----计数排序
- 基数排序--基于计数排序的线性时间复杂度的排序算法
- 线性时间排序:计数排序、基数排序、桶排序
- 算法导论第八章线性时间排序课后答案
- 算法导论 学习笔记 第八章 线性时间内的排序
- 算法导论第八章总结:线性时间排序
- 线性时间排序之计数排序
- 线性时间排序--计数排序、基数排序、桶排序
- 【算法学习】线性时间排序-计数排序、基数排序和桶排序详解与编程实现
- 《算法导论》第8章 线性时间排序 (1)计数排序
- 【算法导论-学习笔记】以线性时间增长的排序——计数排序
- 《算法导论》第8章 线性时间排序 (1)计数排序