编辑代码

#include<bits/stdc++.h>
using namespace std;
int temp[100];
int bucket[10];
int maxBit(int data[],int n)
{ 
	int maxData = data[0];
	for(int i=1;i<n;i++)
	{
		if(maxData<data[i])
			maxData=data[i];
	}
	int d=1;    
	while(maxData>=10)   
	{
		maxData/=10;
		d++;
	}
	return d;
} 
void radixsort(int data[],int n)   
{
	int d = maxBit(data,n); 
	int i,j,k;
	int radix = 1;
	for(i=1;i<=d;i++) 
	{
	    for(j=0;j<10;j++)   
		{
			bucket[j]=0;
		}
		for(j=0;j<n;j++)   
		{
			k=(data[j]/radix)%10;
			bucket[k]++;
		}
	    for(j = 1; j < 10; j++)
            bucket[j] = bucket[j - 1] + bucket[j]; 
		for(j = n-1; j>=0; j--) 
        {
            k = (data[j] / radix) % 10;
            temp[bucket[k] - 1] = data[j];
            bucket[k]--;
        }
        for(j = 0; j < n; j++) 
            data[j] = temp[j];
            
        radix = radix * 10;  
	} 
}
int main()
{
	int a[15]={3,44,38,5,47,15,36,26,27,2,46,4,19,50,48};   
	radixsort(a,15);         
	for(int i=0;i<15;i++)
		cout<<temp[i]<<" ";
	return 0;
}