package com.sort;
/**
* 计数排序
* o(n+k)
* @author Administrator
*
*/
public class CountingSort {
public static void countingSort(int []source,int[]target,int k){
int[] c=new int[k];
for(int i=0;i<source.length;i++){
c[source[i]]=c[source[i]]+1;
}
for(int i=1;i<k;i++){
c[i]=c[i]+c[i-1];
}
for(int i=source.length-1;i>=0;i--){
target[c[source[i]]-1]=source[i];
c[source[i]]=c[source[i]]-1;
}
}
public static void main(String[] args) {
int [] data=new int[]{1,4,3,8,11,6,19};
int []target=new int[data.length];
for(int i=0;i<data.length;i++){
System.out.print(data[i]+" ");
}
System.out.println();
countingSort(data,target,19+1);
for(int i=0;i<target.length;i++){
System.out.print(target[i]+" ");
}
System.out.println();
}

}