Pagini recente » Cod sursa (job #2742726) | Cod sursa (job #1755944) | Cod sursa (job #1145197) | Cod sursa (job #1413943) | Cod sursa (job #2253390)
#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;}