Pagini recente » Cod sursa (job #2339008) | Cod sursa (job #412997) | Cod sursa (job #2241573) | Cod sursa (job #1973405) | Cod sursa (job #1091560)
#include <cstdio>
#include <algorithm>
using namespace std;
const int NMAX = 500005;
int N;
int v[NMAX];
void read() {
freopen("algsort.in", "r", stdin);
freopen("algsort.out", "w", stdout);
scanf("%i",&N);
for(int i = 0; i < N; i++)
scanf("%i",&v[i]);
}
void quicksort(int begin, int end) {
if( begin >= end )
return;
int i = begin - 1;
int e = end;
int r = rand() % (end - begin) + begin;
while(v[i + 1] <= v[end] && i < end)
i++;
while(v[e] > v[r])
e--;
swap(v[r], v[e]);
for(int j = i + 1; j <= e; j++)
if(v[j] <= v[end]){
i++;
swap(v[i], v[j]);
}
quicksort(begin, i - 1);
quicksort(i + 1, end);
}
int main() {
read();
quicksort(0, N - 1);
for(int i = 0; i < N; i++)
printf("%i ", v[i]);
return 0;
}