Pagini recente » Cod sursa (job #541809) | Cod sursa (job #753723) | Cod sursa (job #1867696) | Cod sursa (job #791308) | Cod sursa (job #1198076)
#include<fstream>
#include<cstdlib>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int n,a[500005],aux[500005];
inline int Partition(int st,int dr)
{
int c,i=st,j=dr,x,storeindex;
c=rand()%(dr-st+1)+st;
x=a[c];
swap(a[c],a[dr]);
j--;storeindex=i;
for (int k=i;k<=j;k++)
if (a[k]<=x)
{
swap(a[k],a[storeindex]);
storeindex++;
}
swap(a[storeindex],a[dr]);
return storeindex;
}
inline void Qsort(int st,int dr)
{
int mij=Partition(st,dr);
if (mij-1>st) Qsort(st,mij-1);
if (mij+1<dr) Qsort(mij+1,dr);
}
int main()
{
int i;
fin>>n;
for (i=1;i<=n;i++) fin>>a[i];
Qsort(1,n);
for (i=1;i<=n;i++) fout<<a[i]<<" ";
return 0;
}