Pagini recente » Cod sursa (job #3259153) | Cod sursa (job #1847593) | Cod sursa (job #2579747) | Cod sursa (job #2579753) | Cod sursa (job #1846093)
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
const int NMAX = 500000 + 1;
int n;
int numbers[NMAX];
void read_data() {
f >> n;
for (int i = 0; i < n; i++)
f >> numbers[i];
}
int get_random(int min, int max) {
return rand() % (max - min + 1) + min;
}
void quicksort(int left, int right) {
if (left >= right) return;
int pivotPosition = get_random(left, right);
int pivot = numbers[pivotPosition];
int i = left;
int j = right;
while (i < j) {
while (numbers[i] < pivot && i < right) i++;
while (numbers[j] > pivot && left < j) j--;
if (i <= j) {
int aux = numbers[i];
numbers[i] = numbers[j];
numbers[j] = aux;
i++;
j--;
}
}
if (left < j) quicksort(left, j);
if (i < right) quicksort(i, right);
}
int main() {
srand(time(NULL));
read_data();
quicksort(0, n - 1);
for (int i = 0; i < n; i++)
g << numbers[i] << ' ';
g << '\n';
return 0;
}