Pagini recente » Cod sursa (job #1507738) | Cod sursa (job #1862278) | Cod sursa (job #1236118) | Cod sursa (job #934057) | Cod sursa (job #2618303)
#include <iostream>
#include <fstream>
#include<cstdlib>
using namespace std;
ifstream fin ("algsort.in");
ofstream fout ("algsort.out");
int a[500000], ordonat[500000];
void counting_sort(int v[], int right, int exp)
{
int freq[1024]={0}, exp2=1023;
int i;
for(i=0 ; i<=right ; i++)
freq[(v[i]/exp)&exp2]++;
for(i=1 ; i<=1023 ; i++)
{
freq[i]+=freq[i-1];
}
for(i=right ; i>=0 ; i--)
{
ordonat[freq[(v[i]/exp)&exp2]-1]=v[i];
freq[(v[i]/exp)&exp2]--;
}
for(i=0 ; i<=right ; i++)
v[i]=ordonat[i];
}
int maxx;
void ridiche_sort(int v[], int right)
{
int j, put2=1;
for(j=0 ; j<=3 ; j++)
{
counting_sort(a, right, put2);
put2=put2<<10;
}
}
int main()
{
int i,n;
fin >>n;
maxx=0;
for(i=0;i<n;i++)
{
fin >> a[i];
if(maxx<a[i])
maxx=a[i];
}
ridiche_sort(a, n-1);
for(i=0;i<n;i++)
fout << ordonat[i] << " ";
return 0;
}