Pagini recente » Cod sursa (job #2668042) | Cod sursa (job #2512107) | Cod sursa (job #2512128) | Cod sursa (job #2814094) | Cod sursa (job #2512123)
#include <algorithm>
#include <iostream>
#include <iterator>
#include <fstream>
class cSort
{
public:
void sorts( int* arr, int len )
{
int mi, mx, z = 0; findMinMax( arr, len, mi, mx );
int nlen = ( mx - mi ) + 1; int* temp = new int[nlen];
memset( temp, 0, nlen * sizeof( int ) );
for( int i = 0; i < len; i++ ) temp[arr[i] - mi]++;
for( int i = mi; i <= mx; i++ )
{
while( temp[i - mi] )
{
arr[z++] = i;
temp[i - mi]--;
}
}
delete [] temp;
}
private:
void findMinMax( int* arr, int len, int& mi, int& mx )
{
mi = INT_MAX; mx = 0;
for( int i = 0; i < len; i++ )
{
if( arr[i] > mx ) mx = arr[i];
if( arr[i] < mi ) mi = arr[i];
}
}
};
int main(){
int a[500000],n,i;
std::ifstream fin("algsort.in");
std::ofstream fout("algsort.out");
fin>>n;for(i=0;i<n;i++)fin>>a[i];
cSort z; z.sorts(a,n);
for(i=0;i<n;i++)
fout << a[i]<< " ";
return 0;
}