Pagini recente » Cod sursa (job #2003777) | Cod sursa (job #1655555) | Cod sursa (job #1020228) | Cod sursa (job #2772800) | Cod sursa (job #2629123)
#include <fstream>
using namespace std;
#define maxn 10000005
ifstream cin("algsort.in");
ofstream cout("algsort.out");
int arr[maxn],n,a,b,c,m;
void create_array(){
for(int i=1; i<=n; i++){
cin>>arr[i];
if(arr[i]>m)
m=arr[i];
}
}
void digit_sort(int d){
int output[n+5],count[10]={0};
for(int i=1; i<=n; i++)
count[(arr[i]/d)%10]++;
for(int i=1; i<=9; i++)
count[i]+=count[i-1];
for(int i=n; i>0; i--){
output[count[(arr[i]/d)%10]-1]=arr[i];
count[(arr[i]/d)%10]--;
}
for(int i=1; i<=n; i++)
arr[i]=output[i-1];
}
void radix_sort(){
for(int d=1; m/d>0; d*=10)
digit_sort(d);
}
int main(){
cin>>n;
create_array();
radix_sort();
for(int i=1; i<=n; i+=1)
cout<<arr[i]<<' ';
}