Pagini recente » Cod sursa (job #2771175) | Cod sursa (job #3260690) | Cod sursa (job #2600634) | Cod sursa (job #2445344) | Cod sursa (job #1759207)
#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];
}
void sort(int left, int right) {
int i = left;
int j = right;
int pivot = left + (right-left)/2;
while (i < right || j > left) {
while (A[i] < pivot) i++;
while (A[j] > pivot) j--;
if (i < j) {
swap(A[i], A[j]);
i++; j--;
} else {
if (i < right)
sort(i, right);
if (j > left)
sort(left, j);
return;
}
}
}
void output() {
for (int i=1;i<n;i++) g<<A[i]<<' ';
g<<A[n]<<'\n';
}
int main() {
read();
sort(1, n);
output();
f.close();
g.close();
return 0;
}