Pagini recente » Cod sursa (job #3253628) | haicasepoate | Cod sursa (job #1322103) | Cod sursa (job #46858) | Cod sursa (job #3003924)
#include<iostream>
#include <time.h>
#include<unistd.h>
#include<fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int max(int vec[], int n)
{
int nrMax=vec[0];
for( int i = 1; i < n; i++ )
{
if ( vec[i] > nrMax )
nrMax = vec[i];
}
return nrMax;
}
void Sort(int vec[], int n, int digit)
{
int finalvec[n];
int i, count[10] = {0};
for ( i = 0; i < n; i++)
{
count[(vec[i] / digit) % 10]++;
}
for ( i = 1; i < 10; i++ )
{
count[i] += count[i - 1];
}
for ( i = n - 1; i >= 0; i-- )
{
finalvec[count[(vec[i] / digit ) % 10] - 1 ] = vec[i];
count[(vec[i] / digit) % 10 ]--;
}
for ( i = 0; i < n; i++)
vec[i] = finalvec[i];
}
void radix( int vec[], int n)
{
int ma=max(vec, n);
for ( int digit = 1; ma / digit > 0; digit *= 10 )
Sort(vec,n,digit);
}
bool sort_test(int vec[],int n)
{
bool ok=true;
for ( int i=0; i < n-1; i++ )
{
if ( vec[i+1] < vec[i] )
ok = false;
}
return ok;
}
int main()
{
int n;
f >> n;
int vec[n+1];
for ( int i=0; i<n; i++)
{ f >> vec[i];
cout << vec[i];
}
/// int n = sizeof(vec) / sizeof(vec[0]);
/// clock_t start = clock();
radix(vec,n);
for ( int i=0; i<n; i++)
g << vec[i]<< " ";
/// clock_t end = clock();
/// double elapsed = double(end - start)/CLOCKS_PER_SEC;
/// printf("Time measured: %.9f seconds.\n", elapsed);
cout<<sort_test(vec,n);
}