【排序】4.基数排序

基数排序:分配式排序

基数排序是稳定的排序算法

    public static void sort(int a[],int d){
        //d表示数组中最大的数有几位,
        int k=0;
        int n=1;//除数
        int [][]temp=new int[10][a.length];//
        int []order=new int[10];//桶中数的个数
        for(int i=0;i<d;i++){
            for(int j=0;j<a.length;j++){
                int l=((a[j]/n)%10);
                temp[l][order[l]]=a[j];
                order[l]++;
            }
            for(int j=0;j<10;j++){
                if(order[j]!=0){
                    for(int m=0;m<order[j];m++){
                        a[k]=temp[j][m];
                        k++;
                    }
                }
                order[j]=0;
            }
            n*=10;
            k=0;
        }
    }

时间复杂度:O (nlog(r)m),其中r为所采取的基数,而m为堆数

空间复杂度:O(dr+n)d为长度

posted @ 2018-08-15 13:49  chain155  阅读(84)  评论(0)    收藏  举报