Pagini recente » Cod sursa (job #399105) | Monitorul de evaluare | Cod sursa (job #661165) | Cod sursa (job #2639773) | Cod sursa (job #608166)
Cod sursa(job #608166)
#include <fstream.h>
#include <iostream.h>
#define MAX 500001
#define MAXX 200
ifstream f("algsort.in");
ofstream g("algsort.out");
int v[MAX],s[MAXX];
int main()
{
int i,n,c=0,stop,start,j,p,aux,k,end;
f>>n;
for(i=1;i<=n;i++)
f>>v[i];
s[c++]=1;
s[c++]=n;
while(c>0)
{
j=s[--c];
i=s[--c];
start=i;
stop=j;
p=v[(i+j)/2];
while(i<=j)
{
while(v[i]<p)
i++;
while(v[j]>p)
j--;
if(i<=j)
aux=v[i], v[i]=v[j], v[j]=aux, i++, j--;
}
if(i-start > stop-i)
{
if(stop-i > 1)
s[c++]=i+1, s[c++]=stop;
if(i-start > 1)
s[c++]=start, s[c++]=i-1;
}
else
{
if(stop-i > 1)
s[c++]=i+1, s[c++]=stop;
if(i-start > 1)
s[c++]=start, s[c++]=i-1;
}
}
for(i=1;i<=n;i++)
g<<v[i]<<" ";
f.close();
g.close();
return 0;
}