Pagini recente » Cod sursa (job #1918488) | Cod sursa (job #1657280) | Cod sursa (job #1666700) | Cod sursa (job #1919196) | Cod sursa (job #1189425)
#include <iostream>
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
using namespace std;
#define MAXN 500001
int A[MAXN];
void randomizePartition(int p, int r) ;
// QuickSort - average case O(N logN), worst case O(N^2)-> sorted array
// WC: partition of 1.
void partition(int p, int r) {
int x = A[r];
int left = p;
for (int i = p ; i < r; i++) {
if (A[i] <= x) {
swap(A[left], A[i]);
left ++;
}
}
swap(A[left], A[r]);
randomizePartition(p, left - 1);
randomizePartition(left + 1, r);
}
void randomizePartition(int p, int r) {
if (p >= r) {
return;
}
srand ( time(NULL) );
int q = rand() %( r - p) + p ;
swap (A[q], A[r]);
partition(p, r);
}
int main() {
freopen("algsort.in", "r", stdin);
freopen("algsort.out", "w", stdout);
int N ;
cin >> N;
int x;
for (int i = 0; i < N; i++) {
cin >> x;
A[i] = x;
}
randomizePartition(0, N - 1);
for (int i = 0; i < N - 1; i++) {
cout << A[i] << " ";
}
cout << A[N - 1] << endl;
fclose(stdin);
fclose(stdout);
return 0;
}