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]+" ");
}
}