编辑代码

#include <iostream>
#include <stdio.h>
using namespace std;

int findMax(int a[],int len){
    int max=a[0];
    for(int i=0;i<len;++i){
        if(a[i]>max){
            max=a[i];
        }
    }
    return max;
}

int Digit(int num){
    int k=0;
    while(num!=0){
        num/=10;
        k++;
    }
    return k;
}


void clear(int b[][20],int len){
    for(int i=0;i<len;++i){
        for(int j=0;j<len;++j){
            b[i][j]=0;
        }
    }
}

void printArray(int a[], int len) {
    for (int i = 0; i < len; i++) {
         cout << a[i] <<" ";
    }
}

void radixSort(int a[],int len){
    int b[10][20]={};
    int max=findMax(a,len);
    int k=Digit(max);
    int num;
    int y=1;
    for(int i=1;i<=k;i++){
        clear(b,9);
        for(int j=0;j<len;j++){
            num=a[j]/y%10;
            b[num][++b[num][0]] = a[j];
        }
        int a_len=0;
        for(int n=0;n<=9;n++){
            for(int m=1;m<=b[n][0];m++){
                a[a_len++]=b[n][m];
            }
        }
        printArray(a,len);
        cout<<endl;
        y*=10;
    }
    
}



int main() {
    
    int a[10] = {789,36,26,27,2,46,4,19,50,48};
    int size=sizeof(a)/sizeof(int);
    // int b[9][9];
    // int max=findMax(a,10);
    // printf("%d\n",max);
    // int k=Digit(max);
    // printf("%d\n",k);
    radixSort(a,size);
    // printArray(a,10);

	
	return 0;
}