chenfei0 2020-04-18
public void countingsort(int[] array, int[] b, int k) { //创建数组c int[] c = new int[k+1]; for(int i=0;i<c.length;i++) { c[i] = 0; } //统计数组array中每个元素出现的次数 for(int i=0;i<array.length;i++) { c[array[i]]++; } /** * 统计数组中小于等于某一个数的的个数 * 因为小于等于0的数的个数就是等于0的个数,所以迭代从1开始 */ for(int i=1;i<c.length;i++) { c[i] =c[i] + c[i-1]; } for(int i=0;i<array.length;i++) { /** * */ b[c[array[i]] - 1] = array[i]; /** * */ c[array[i]]--; } } public static void main(String[] args) { int[] array =new int[]{3,13,5,2,55,17,20,1,6,5}; int[] b = new int[10]; new Counting().countingsort(array,b,55);//其中55为数组中最大的元素值 for(int i=0;i<b.length;i++) { System.out.print(b[i]+" "); } }