计数排序

来源:互联网 发布:java poin型变量 编辑:程序博客网 时间:2024/06/01 09:36

计数排序假设n个输入元素中的每一个都是介于0到k之间的整数,此处k为某个整数。

public static int[] Sort1(int [] A,int k){//k表示数组A中的最大值        int [] C=new int[k+1];//临时数组C        int [] B=new int[A.length];//B存放结果        //首先是通过一个数组C[i]计算等于i的元素个数,        for(int i=0;i<A.length;i++){            C[A[i]]++;        }        //接着计算小于或者等于i的元素个数,数组C的下标从1开始        for(int i=1;i<=k;i++){            C[i]=C[i]+C[i-1];        }        //从后向前遍历,保证稳定性        for(int i=A.length-1;i>=0;i--){            //C[A[i]]表示A[i]在数组B中的位置,因为B[i]从0开始,不是从1开始,所以要减1            B[C[A[i]]-1]=A[i];            C[A[i]]--;        }        return B;    }

参考
参考
参考