Pagini recente » Cod sursa (job #3151897) | Cod sursa (job #2734658) | Cod sursa (job #104456) | Cod sursa (job #2504291) | Cod sursa (job #3031018)
#include<fstream>
#include <iostream>
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
int maxim(int v[], int n)
{
int maxx = v[0];
for (int i = 1; i < n; i++)
if (v[i] > maxx)
maxx = v[i];
return maxx;
}
void countSort(int v[], int n, int exp)
{
int aux[n];
int i, digit[10];
for(i=0;i<=9;i++)
digit[i]=0;
for (i = 0; i <n; i++)
digit[(v[i] / exp) % 10]++;
for (i = 1; i < 10; i++)
digit[i] += digit[i - 1];
for (i = n - 1; i >= 0; i--) {
aux[digit[(v[i] / exp) % 10] - 1] = v[i];
digit[(v[i] / exp) % 10]--;
}
for (i = 0; i < n; i++)
v[i] = aux[i];
}
void radixsort(int v[], int n)
{
int m = maxim(v, n);
int exp=1;
while(m/exp>0){
countSort(v,n,exp);
exp*=10;
}
}
int main()
{
int v[1000],x;
int n=0;
while(in>>x)
{
v[n]=x;
n++;
}
radixsort(v, n);
for (int i = 0; i < n; i++)
out << v[i] << " ";
return 0;
}