Pagini recente » Cod sursa (job #2187737) | Cod sursa (job #1885063) | Cod sursa (job #1087612) | Cod sursa (job #752272) | Cod sursa (job #1785545)
/* Sortare folosita: QSort */
#include <cstdio>
#include <algorithm>
using namespace std;
#define Nmax 500002
FILE *f = fopen("algsort.in", "r");
FILE *g = fopen("algsort.out", "w");
int v[Nmax];
int Partitionare(int st, int dr) {
int pivot = v[(dr + st) >> 1];
int x = st - 1;
int y = dr + 1;
while (1) {
do {
x++;
}while (v[x] < pivot);
do {
y--;
}while (v[y] > pivot);
if (x < y)
swap(v[x], v[y]);
else
return y;
}
}
void QSort(int st, int dr) {
if (st >= dr)
return;
int poz = Partitionare(st, dr);
QSort(st, poz);
QSort(poz + 1, dr);
};
int main() {
int N;
fscanf(f, "%d", &N);//fin >> N;
for (int i = 1; i <= N; ++i)
fscanf(f, "%d", &v[i]); //fin >> v[i];
random_shuffle(v + 1, v + N + 1);
QSort(1, N);
for (int i = 1; i <= N; ++i)
fprintf(g, "%d ", v[i]);//fout << v[i] << " ";
return 0;
}