Pagini recente » Cod sursa (job #2418336) | Cod sursa (job #499703) | Cod sursa (job #2925339) | Cod sursa (job #1312783) | Cod sursa (job #1785538)
/* Sortare folosita: QSort */
#include <fstream>
#include <algorithm>
using namespace std;
#define Nmax 500002
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int v[Nmax];
int Partitionare(int st, int dr) {
int pivot = v[dr];
int i = st;
for (int j = st; j < dr; ++j) {
if (v[j] <= pivot) {
swap(v[i], v[j]);
i++;
}
}
swap(v[i], v[dr]);
return i;
}
void QSort(int st, int dr) {
if (st >= dr)
return;
int poz = Partitionare(st, dr);
QSort(st, poz - 1);
QSort(poz + 1, dr);
};
int main() {
int N;
fin >> N;
for (int i = 1; i <= N; ++i)
fin >> v[i];
random_shuffle(v + 1, v + N + 1);
QSort(1, N);
for (int i = 1; i <= N; ++i)
fout << v[i] << " ";
return 0;
}