Pagini recente » Cod sursa (job #1695625) | Cod sursa (job #2733829) | Cod sursa (job #848913) | Cod sursa (job #3194870) | Cod sursa (job #1275513)
#include <iostream>
#include <fstream>
#include <math.h>
#define MAXED 2147483647
#define NMAX 500010
using namespace std;
ifstream fin ("algsort.in");
ofstream fout ("algsort.out");
int v[1610], smen[410];
int main()
{
int n, rad, i;
fin >> n;
rad = ceil(sqrt(n));
for (int i = 0; i < n; fin >> v[i++]);
//smen the min out
for (i = 0; i < rad; i++)
{
smen[i] = v[i * rad];
for (int j = 1; j < rad; j++)
if (i * rad + j < n && smen[i] > v[i * rad + j]) smen[i] = v[i * rad + j];
}
//sort
int m, ind;
for (int k = 0; k < n; k++)
{
ind = 0;
m = smen[0];
for (i = 1; i < rad; i++)
{
if (smen[i] < m)
{
ind = i;
m = smen[i];
}
}
fout << m << " ";
for (i = rad * ind; i < rad * (ind + 1); i++)
{
if (i < n && m == v[i])
{
v[i] = MAXED;
break;
}
}
m = MAXED;
for (i = rad * ind; i < rad * (ind + 1); i++)
{
if (i < n && v[i] <= m)
m = v[i];
}
smen[ind] = m;
}
return 0;
}