Cod sursa(job #2629123)

Utilizator Leonard123Mirt Leonard Leonard123 Data 19 iunie 2020 08:56:37
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#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]<<' ';
}