算法导论第八章__实现计数排序
来源:互联网 发布:免费网络短信平台 编辑:程序博客网 时间:2024/06/08 11:59
计数排序:不需要比较就能得出排序的顺序__例如,本章的计数排序、基数排序、桶排序
比较排序:需要进行比较才能得出排序的顺序__例如,本章的堆排序、快速排序(本质是插入排序)、插入排序
代码清单:计数排序__完美演绎下标的作用
public class Count_Sort {//接收需要排序的数组private int[] A;//排序后的数组private int[] B;//用于计数的数组private int[] C;// 初始化public Count_Sort(int[] A) {this.A = A;B = new int[A.length];C = new int[innitTemp()];}// 初始化临时数组的大小public int innitTemp() {int bigest = A[0];for (int i = 1; i < A.length; i++) {if (A[i] > bigest) {bigest = A[i];}}return bigest+1;}// 计数排序public void sort() {// 把i中对应的元素映射到C中for (int i = 0; i < A.length; i++) {int value = A[i];C[value] = C[value] + 1;// 用C统计value有多少个}show(C);// 对C的值含义进行更换,换为有多少个小于当前下标的个数for (int i = 1; i < C.length; i++) {C[i] += C[i - 1];}show(C);// 最后得出来A[i]元素正确的插入位置for (int i = A.length - 1; i >= 0; i--) {int value = A[i];// 为什么要-1呢?想想,如果比5小的数是2个,那5就应该查到数组的2个位置,那么第2个位置,对应就是A[C[value]-1]B[C[value] - 1] = value;// 这个很重要!例如,A[5]==A[2]这种情况,A[5]插入了正确的位置,那么A[2]插入的顺序怎么算呢?就让它紧跟在A[5]后面!C[value] -= 1;}show(B);}public void show(int[] X) {for (int i = 0; i < X.length; i++) {int j = X[i];System.out.print(j + " ");}System.out.println();System.out.println("--------------------------------------------------------------");}public static void main(String[] args) {int []A={1,2,3,3,2,1,1,5,1,3,4,5};Count_Sort sort=new Count_Sort(A);sort.sort();}}
输出的结果:
0 4 2 3 1 2
--------------------------------------------------------------
0 4 6 9 10 12
--------------------------------------------------------------
1 1 1 1 2 2 3 3 3 4 5 5
--------------------------------------------------------------
0 0
- 算法导论第八章__实现计数排序
- 算法导论第八章—计数排序
- 【算法导论】第八章之计数排序
- 算法导论第八章 -- 计数排序
- 算法导论-第八章-计数排序
- 算法导论-第八章-计数排序
- 算法导论第八章(计数排序)
- 算法导论第八章计数排序-基数排序-桶排序-c++
- 算法导论 第八章计数排序(counting sort)
- 学习《算法导论》第八章 计数排序 总结
- 算法导论计数排序实现
- 算法导论:第8章 线性时间排序__计数排序
- 算法导论第八章伪码转C++ __桶排序
- 堆排序__算法导论实现
- 算法导论第八章伪码转C++_计数排序
- 【算法导论】c++实现计数排序
- 算法导论C语言实现: 计数排序
- 算法导论计数排序python实现
- 公司业绩提不上去,老版要求加班,这样合理吗?
- 7 种将字符串反转的 Java 方法
- 2014 BUPT 新生排位赛05
- 相关系数及matlab实现
- 代理大全
- 算法导论第八章__实现计数排序
- 最能毁掉程序员健康的几件事
- 律师你好,公司搬离本市区,需要向职工支付
- linux redhat 6 安装中文支持
- Geeksquiz | Dynamic Memory Allocation
- [设计模式]-装饰器模式(Decorator)
- 让DuiLib支持Icon图片显示
- 判定时间是否有效的函数
- 【Leetcode长征系列】Unique Paths