Pagini recente » Cod sursa (job #1872387) | Cod sursa (job #2474558) | Cod sursa (job #124831) | Cod sursa (job #411098) | Cod sursa (job #3137768)
#include <fstream>
using namespace std;
const int Nmax = 500005;
int a[Nmax], aux[Nmax], n;
void mergeSort(int left, int right) {
if(left >= right) {
return;
}
int mid = (left + right) / 2;
mergeSort(left, mid);
mergeSort(mid + 1, right);
int i = left, j = mid + 1, p = 1;
while(i <= mid && j <= right) {
if(a[i] < a[j]) {
aux[p++] = a[i++];
}
else {
aux[p++] = a[j++];
}
}
while(i <= mid) {
aux[p++] = a[i++];
}
while(j <= right) {
aux[p++] = a[j++];
}
for(i = 1; i < p; i++) {
a[left + i - 1] = aux[i];
}
}
int main() {
ifstream fin("algsort.in");
ofstream fout("algsort.out");
fin >> n;
for(int i = 1; i <= n; i++) {
fin >> a[i];
}
mergeSort(1, n);
for(int i = 1; i <= n; i++) {
fout << a[i] << " ";
}
fout << "\n";
}