美文网首页
基数排序模板

基数排序模板

作者: 失树 | 来源:发表于2017-11-29 11:40 被阅读0次
    template<class Record>
    void RadixSort(Record Array[],int n,int d,int r){//n数组长度,d为排序码个数,r为基
        Record * TempArray=new Record[n];
        int * count=new int[r];
        int i,j,k;
        int Radix=1;
        for(i=1;i<=d;i++){
            for(j=0;j<r;j++)
                count[j]=0;
            for(j=0;j<r;j++){
                k=(Array[j]/Radix)%r;
                count[k]++;
            }
            for(j=1;j<r;j++)
                count[j]+=count[j-1];
            for(j=n-1;j>=0;j--){
                k=(Array[j]/Radix)%r;
                count[k]--;
                TempArray[count[k]]=Array[j];
            }
            for(j=0;j<n;j++)
                Array[j]=TempArray[j];
            Radix*=r;
        }
        delete[]TempArray[];
        delete[]count;
    }
    

    相关文章

      网友评论

          本文标题:基数排序模板

          本文链接:https://www.haomeiwen.com/subject/zojubxtx.html