Pagini recente » Cod sursa (job #1503932) | Cod sursa (job #2740506) | Cod sursa (job #1676168) | Cod sursa (job #1144492) | Cod sursa (job #1477255)
#include <cstdio>
#include <algorithm>
using namespace std;
int a[500023],n;
/*int part(int st,int dr)
{
int val=a[st];
int i=st-1,j=dr+1;
while(1)
{
do
{
j--;
}while(a[j]>val&&j>=st);
do
{
i++;
}while(a[i]<val&&i<=dr);
if(i<j)
{
swap(a[i],a[j]);
}
else
{
return j;
}
}
}*/
int part(int st,int dr)
{
int val=a[dr];
int i=st;
for(int j=st;j<dr;j++)
{
if(a[j]<=val)
{
swap(a[i],a[j]);
i++;
}
}
swap(a[i],a[dr]);
return i;
}
void quicksort(int st,int dr)
{
if(st>=dr) return;
int pv=part(st,dr);
quicksort(st,pv-1);
quicksort(pv+1,dr);
}
int main()
{
freopen ("algsort.in","r",stdin);
freopen ("algsort.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
random_shuffle(a+1,a+n+1);
quicksort(1,n);
for(int i=1;i<=n;i++) printf("%d ",a[i]);
}