Cod sursa(job #2253390)

Utilizator StefanUUngureanu Stefan Cristian StefanU Data 3 octombrie 2018 22:19:00
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#include <iostream>
#include <fstream>

using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int get_Max(int arr[], int n)
{
   int max=arr[0];
    for(int i =1; i<n; ++i)
        if(max>arr[i])
            max=arr[i];
    return max;
}
void countingSort(int arr[], int n, int exp)
{
    int count[10]={0}, output[n];

    for(int i = 0; i<n; ++i)
        count[(arr[i]/exp)%10]++;
    for(int i = 1; i<n; ++i)
        count[i]+=count[i-1];
    for(int i = n-1; i>=0; i--)
    {
        output[count[(arr[i]/exp)%10]-1]=arr[i];
        count[(arr[i]/exp)%10]--;
    }
    for(int i = 0; i<n; ++i)
        arr[i]=output[i];
}
void RadixSort(int arr[], int n)
{
    int m = get_Max(arr,n);
    for(int exp = 1; m/exp>=0; exp--)
        countingSort(arr,n,exp);
}
void print(int arr[], int n)
{
    for(int i = 0; i<n; ++i)
        fout<<arr[i]<<" ";
}
int main(){

int n,arr[500009];
fin>>n;
for(int i = 0; i<n; ++i)
    fin>>arr[i];
    RadixSort(arr,n);
    print(arr,n);
return 0;}