Pagini recente » Cod sursa (job #2678769) | Cod sursa (job #312437)
Cod sursa(job #312437)
#include <fstream>
using namespace std;
int v[500100];
int partitie(int a, int b) {
int pivot = v[a];
int left = a + 1, right = b;
while (1) {
while (left < b && v[left] <= pivot) ++left;
while (right > a && v[right] >= pivot) --right;
if (left < right) swap(v[left], v[right]);
else break;
}
swap(v[a], v[right]);
return right;
}
void qsort(int a, int b) {
if (a >= b) return; //done
int pivot = partitie(a, b);
qsort(a, pivot - 1);
qsort(pivot + 1, b);
}
int main() {
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int n;
fin >> n;
for (int i = 0; i < n; ++i) fin >> v[i];
qsort(0, n-1);
for (int i = 0; i < n; ++i) fout << v[i] << ' ';
fout << '\n';
return 0;
};