通过统计元素的个数来达到排序的目的。
优点:
不需要对元素比较就能对元素进行排序(这个想法很巧妙)。
缺点:
1:只能对自然数进行排序。
2:自然数的数值不能太大(排序过程中需要创建一个计数数组,其长度要不能小于数组中的最大值)
实现代码:
import java.lang.reflect.Array;
public class CountSort<T extends Number> {
private T[] array;
public CountSort(T[] array) {
this.array = array;
}
public void sort() {
int[] count = new int[10000];
//统计每个元素的个数
for (T i : array) {
int intValue = i.intValue();
count[intValue] += 1;
}
for (int i = 1; i < count.length; i++) {
count[i] += count[i - 1];
}
@SuppressWarnings("unchecked")
T[] copy = (T[]) Array.newInstance(Number.class, array.length);
for (int i = copy.length - 1; i > -1; i--) {
int value = array[i].intValue();
copy[count[value] - 1] = array[i];
count[value]--;
}
this.array = copy;
}
public static void main(String[] args) {
Integer[] temp = new Integer[] { 9, 8, 7, 4, 3, 5, 6, 1 };
// temp = new Integer[] { 9, 8, 7, 6, 5,4, 3, 2 };
temp = new Integer[] { 2, 5, 3, 0, 2, 3, 0, 3 };
temp = new Integer[] { 9, 8, 7, 4, 3, 5, 6, 1,0 };
CountSort<Integer> qs = new CountSort<Integer>(temp);
qs.sort();
qs.print();
}
private void print() {
for (T i : array) {
System.out.print(i + " ");
}
System.out.println();
}
}
分享到:
相关推荐
MIT算法导论——算法顶尖经典教材MIT算法导论——算法顶尖经典教材MIT算法导论——算法顶尖经典教材MIT算法导论——算法顶尖经典教材MIT算法导论——算法顶尖经典教材
计算机系的教材,算法导论————————————————————————————————
算法导论——中文版
算法导论英文版的教师用书 算法导论教师手册.pdf
CLRS for Instructor 《算法导论——教师用书》(有部分习题答案) Computer Algorithms - Introduction to Design and Analysis 3rd - Sara Baase Solutions for CLRS (算法导论部分习题解答)
有助算法入门的同学,对于想在acm程序设计上有所提高的同学是必选手册 。
算法导论,关于算法最权威最全面最深入的书籍,分享给大伙儿~
所有代码都是在我学习这本书时亲手敲出来的,并且调试正确了,包括:第三部分到第六部分(即10-26章),外加第七部分31和32章所有的算法和数据结构以及编程习题还有思考题的C++实现源代码; 第一、二部分学习的较早...
算法界巨著《算法导论》的习题解答,来自于该书著者Cormen博士,包含了对每一章的概括总结和其上课笔记
《算法导论》原书名——《Introduction to Algorithms》,是一本十分经典的计算机算法书籍,与高纳德(Donald E.Knuth)的《计算机程序设计艺术》(《The Art Of Computer Programming》)相媲美《算法导论》自第一...
pdf文件,算法导论中文版,一本风靡全球的书。适合广大大学生使用。项目经验不是关键,缺少的是算法思想。
算法导论是编程领域提升编程境界的必备书籍,他能让你的编程思维突然间变得开阔起来,绝对的好书啊
就是传说中的MIT的算法导论啊,英文原版第二版,很不错的
供大家阅读。算法导论是一本很好的书。其课后思考题更是启发人的思想
《算法导论》由Thomas H.Cormen、Charles E.Leiserson、Ronald L.Rivest、Clifford Stein四人合作编著(其中Clifford Stein是第二版开始参与的合著者)。本书的最大特点就是将严谨性和全面性融入在了一起。
这个是关于RandomizedAlgorithms的,英文版
CLRS 算法导论 课后解答 教师用书
这本书是南京大学翻译的! 里面涵盖丰富的算法思想和算法设计技巧同时还有算法优化! 比较适合初学者!
主要是对算法导论中计数排序的实现