Pagini recente » Cod sursa (job #550037) | Cod sursa (job #653419) | Cod sursa (job #3173570) | Cod sursa (job #1647078) | Cod sursa (job #1785533)
/* 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 left = st, right = dr - 1;
while (left <= right) {
while (v[left] < pivot)
left++;
while (v[right] >= pivot)
right--;
if (left <= right) {
swap(v[left], v[right]);
left++;
right--;
}
}
swap(v[left], v[dr]);
return left;
}
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;
}