Pagini recente » Cod sursa (job #2532196) | Cod sursa (job #1707953) | Cod sursa (job #3221515) | Cod sursa (job #2771171) | Cod sursa (job #1759125)
#include <iostream>
#include <fstream>
#include <algorithm>
#define nmax 500005
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int n;
int A[nmax];
void read() {
f>>n;
for (int i=1;i<=n;++i)
f>>A[i];
f.close();
}
void sort(int left, int right) {
int mij = left + (right - left)/2;
int pivot = A[mij];
int i = left;
int j = right;
while (left < j || i < right) {
while (A[i] < pivot)
i++;
while (A[j] > pivot)
j--;
if (i <= j) {
swap(A[i], A[j]);
i++;
j--;
} else {
if (left < j)
sort(left, j);
if (i < right)
sort(i, right);
return;
}
}
}
void output() {
for (int i=1;i<n;++i)
g<<A[i]<<' ';
g<<A[n]<<'\n';
}
int main() {
read();
sort(1, n);
output();
g.close();
return 0;
}