至于啥叫计数排序就不说了,下面是Java的实现,计数排序就是不用进行元素的比较,效率较高,只是其适用范围有限(特殊条件)。
public class CountSort { public static void main(String[] args) { int[] a = {3, 1, 6, 0, 3, 0, 1, 5, 3, 6}; int max = getMax(a); Display(a, "Before sort:"); a = Sort(a, max); Display(a, "After sort:"); } public static int[] Sort(int[] a, int max) { int[] b = new int[a.length]; int[] c = new int[max+1]; for(int i=0; i<b.length; i++) b[i] = 0; for(int i=0; i<c.length; i++) c[i] = 0; int temp = 0; for(int i=0; i<a.length; i++) { temp = a[i]; c[temp] = c[temp] + 1; } for(int i=1; i<c.length; i++) c[i] = c[i] + c[i-1]; for(int i=a.length-1; i>=0; i--) { temp = a[i]; b[c[temp]-1] = temp; c[temp] = c[temp] - 1; } return b; } public static int getMax(int[] a) { int max = a[0]; for(int i=1; i<a.length; i++) { if(a[i] > max) max = a[i]; } return max; } public static void Display(int[] a, String str) { System.out.println(str); for(int i=0; i<a.length; i++) System.out.print(a[i] + " "); System.out.println(); } } //输出结果为: //Before sort: //3 9 1 8 6 0 4 7 2 9 6 2 3 8 //After sort: //0 1 2 2 3 3 4 6 6 7 8 8 9 9