Pagini recente » Cod sursa (job #709830) | Cod sursa (job #215346) | Cod sursa (job #776810) | Cod sursa (job #1748775) | Cod sursa (job #1070555)
#include <fstream>
#define Nmax 500005
using namespace std;
int N,a[Nmax];
inline void Read()
{
ifstream fin("algsort.in");
fin>>N;
for(int i=1;i<=N;++i)
fin>>a[i];
fin.close();
}
inline int Divide(int st, int dr)
{
int x=a[st],aux;
while(st<dr)
{
while(st<dr && a[dr]>=x)
--dr;
aux=a[st];a[st]=a[dr];a[dr]=aux;
while(st<dr && a[st]<=x)
++st;
aux=a[st];a[st]=a[dr];a[dr]=aux;
}
a[st]=x;
return st;
}
inline void QSort(int st, int dr)
{
int m=Divide(st,dr);
if(m-1>=st)
QSort(st,m-1);
if(m+1<=dr)
QSort(m+1,dr);
}
inline void Write()
{
ofstream fout("algsort.out");
for(int i=1;i<=N;++i)
fout<<a[i]<<" ";
fout<<"\n";
fout.close();
}
int main()
{
Read();
QSort(1,N);
Write();
return 0;
}