Pagini recente » Cod sursa (job #1883543) | Cod sursa (job #2305943) | Cod sursa (job #204447) | Autentificare | Cod sursa (job #1043976)
#include<fstream>
#include<math.h>
using namespace std;
#define max 2147483647;
int N, v[500000], w[500000], a[710];
int main()
{
int i, j, k, in, l, p, nr=0;
ifstream f("algsort.in");
ofstream g("algsort.out");
f>>N;
for(i=0; i<N; i++)
f>>v[i];
l=sqrt(N);
if(l*l==N)
in=N/l;
else
in=N/l+1;
for(i=0; i<in; i++)
{
p=v[i*l];
for(j=i*l+1; j<i*l+l && j<N; j++)
if(v[j]<p)
{
p=v[j];
w[i]=j;
}
a[i]=p;
}
while(nr<N)
{
p=a[0];
k=0;
for(i=0; i<in; i++)
{
if(a[i]<p)
{
p=a[i];
k=i;
}
}
v[w[k]]=max;
g<<p<<" ";
nr++;
p=max;
w[k]=k*l;
a[k]=p;
for(j=k*l; j<=k*l+l-1 && j<N; j++)
{
if(v[j]<p)
{
p=v[j];
w[k]=j;
a[k]=p;
}
}
}
f.close();
g.close();
}