Pagini recente » Cod sursa (job #2314151) | Cod sursa (job #345368) | Cod sursa (job #284747) | Cod sursa (job #1010900) | Cod sursa (job #2313614)
#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[left]);
pivot = a[left];
int i = left-1, j = right+1;
while (i < j) {
do { ++i; } while (a[i] < pivot);
do { --j; } while (a[j] > pivot);
if (i >= j)
return j;
swap(a[i], a[j]);
}
}
void quicksort(int left, int right) {
if (left < right) {
int pi = partition(left, right);
quicksort(left, pi);
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;
}