Pagini recente » Statistici Florin (BucataruFlorin) | Cod sursa (job #740066) | Cod sursa (job #2018561) | Cod sursa (job #396089) | Cod sursa (job #1314302)
//BatogSort
#include <cstdio>
#include <math.h>
using namespace std;
int v[500003], s[710], n, rn, ns, sv[500003], k=0;
int minv(int j)
{
int m = v[j*rn+1], p = j*rn+1, i;
for(i=j*rn+2; i<=(j+1)*rn && i<=n; i++)
if(m>v[i])
{
m=v[i];
p=i;
}
v[p]=INFINITY;
return m;
}
void cautas()
{
int m=s[0],p=0, i;
for(i=1; i<ns; i++)
if(m>s[i])
{
m=s[i];
p=i;
}
sv[k++]=m;
s[p] = minv(p);
}
int main()
{
int i;
FILE *f = fopen("algsort.in", "r");
fscanf(f, "%d", &n);
for(i=1; i<=n; i++)
fscanf(f, "%d", &v[i]);
fclose(f);
rn = sqrt(n);
ns = rn;
if(rn*rn<n)
ns++;
if(rn*ns<n)
ns++;
for(i=0; i<ns; i++)
s[i] = minv(i);
for(i=1; i<=n; i++)
cautas();
f=fopen("algsort.out","w");
for(i=0; i<n; i++)
fprintf(f, "%d ", sv[i]);
fclose(f);
return 0;
}