Pagini recente » Cod sursa (job #2013929) | Cod sursa (job #3204235) | Mall | Cod sursa (job #2952) | Cod sursa (job #1590114)
#include <fstream>
#include <iostream>
#include <cstdio>
#include <ctime>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
const int MAX_N = 500100;
int n;
int v[MAX_N];
void quicksort(int lo, int hi) {
if (lo >= hi) return;
int pivot = rand() % (hi - lo) + lo;
swap(v[pivot], v[lo]);
int i = lo + 1, j = hi;
while (i <= j) {
while (i <= j && v[i] <= v[lo]) i += 1;
while (i <= j && v[j] > v[lo]) j -= 1;
if (i < j) {
swap(v[i], v[j]);
}
}
pivot = i - 1;
swap(v[lo], v[pivot]);
quicksort(lo, pivot - 1);
quicksort(pivot + 1, hi);
}
int main() {
srand(time(NULL));
fin >> n;
for (int i = 1; i <= n; i += 1) {
fin >> v[i];
}
quicksort(1, n);
for (int i = 1; i <= n; i += 1) {
fout << v[i] << ' ';
}
return 0;
}