编辑代码

#include <iostream>
using namespace std;
void print(int arr[],int n)
{
    for(int i=0;i<n;i++)
    {
        cout<<arr[i]<<" ";
    }
    cout<<endl;
}
int getradix(int value,int radix,int count) 
{
    int a=value;
    for(int i=0;i<count;i++)
    {
        a=a/radix;
    }
    a=a%10;
    return a;
}
bool paixu(int arr[],int radix,int n)
{
    if(n<=1)
    {
        return true;
    }
    int max=arr[0];
    for(int i=0;i<n;i++)
    {
        if(max<arr[i])
        {
            max=arr[i];
        }
    }
    int radixcount=1;
    while((max/=radix)>0)
    {
        radixcount++;
    }
    int *countingRadixBuckets = new int[radix]();
    int *tempArray = new int[n]();
    for(int radixIndex=0;radixIndex<radixcount;radixIndex++)
    {
        for (int j = 0; j < n; ++j)
        {
            ++countingRadixBuckets[getradix(arr[j], radix, radixIndex)];
        }
        for (int k = 1; k < radix; ++k)
        {
            countingRadixBuckets[k] += countingRadixBuckets[k-1];
        }
        for (int l = n - 1; l >= 0; --l)
        {
            tempArray[--countingRadixBuckets[getradix(arr[l], radix, radixIndex)]] = arr[l];
        }
        for (int m = 0; m < n; ++m)
        {
            arr[m] = tempArray[m];
        }
        for (int x = 0; x < radix; ++x)
        {
            countingRadixBuckets[x] = 0;
        }
        cout<<"第"<<radixIndex+1<<"轮结果为:"<<endl;
        print(arr,n);
    }
    delete [] countingRadixBuckets;
    delete [] tempArray;
    return true;
}
int main() {
    int arr[]={56,23,85,234,64,235};
    int arrayLen = sizeof(arr)/sizeof(int);
    print(arr, arrayLen);
    paixu(arr, 10,arrayLen);
	return 0;
}