Pagini recente » Cod sursa (job #3172357) | Cod sursa (job #3001840) | Cod sursa (job #3176263) | Cod sursa (job #2069336) | Cod sursa (job #1230625)
#include <iostream>
#include <cstdio>
#include <algorithm>
#define nmax 500001
using namespace std;
int a[nmax],n,k;
int pivot(int st,int dr){
int i,piv,j;
piv = a[st];
i = st+1;
j = dr;
while(i<j){
if(a[i] < piv) i++;
if(a[j] >= piv) j--;
if(i < j && a[i] >= piv && a[j] < piv){
swap(a[i],a[j]);
i++;j--;
}
}
a[st] = a[i-1];
a[i-1] = piv;
return i-1;
}
void Qsort(int st,int dr){
if(st < dr){
k = pivot(st,dr);
if(st < k-1) Qsort(st,k-1);
if(k+1 < dr) Qsort(k+1,dr);
}
}
int main(){
int i;
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
scanf("%d",&n);
for(i = 1; i <= n; i++)
scanf("%d",&a[i]);
Qsort(1,n);
for(i=1;i<=n;i++)
cout << a[i]<<' ';
return 0;
}