Pagini recente » Cod sursa (job #1428018) | Cod sursa (job #1068189) | Cod sursa (job #1508781) | Cod sursa (job #2159546) | Cod sursa (job #2313472)
#include <bits/stdc++.h>
using namespace std;
const int maxn = 5e5+2;
FILE *fin = freopen("algsort.in", "r", stdin);
FILE *fout = freopen("algsort.out", "w", stdout);
int n;
int a[maxn];
int partition(int left, int right) {
int pivot = left + rand()%(right-left+1);
swap(a[pivot], a[right]);
pivot = right;
int i = left-1;
for (int j = left; j < right; ++ j)
if (a[j] <= a[pivot]) {
++i;
swap(a[i], a[j]);
}
i++;
swap(a[i], a[pivot]);
return i;
}
void quicksort(int left, int right) {
if(left >= right)
return;
int pi = partition(left, right);
quicksort(left, pi-1);
quicksort(pi+1, right);
}
int main(){
cin >> n;
for (int i = 0; i < n; ++ i)
cin >> a[i];
quicksort(0, n-1);
for (int i = 0; i < n; ++ i)
cout << a[i] << " ";
return 0;
}