Pagini recente » Cod sursa (job #550427) | Cod sursa (job #1674813) | Cod sursa (job #3155675) | Cod sursa (job #3234942) | Cod sursa (job #1196681)
/*
* main.cpp
*
* Created on: Jun 8, 2014
* Author: stefan
*/
#include <fstream>
using namespace std;
int b[500002];
void merge(int a[], int low, int mid, int high) {
int i, j, k;
i = low;
j = mid + 1;
k = low;
while ((i <= mid) && (j <= high)) {
if (a[i] < a[j]) {
b[k] = a[i];
i = i + 1;
}
else {
b[k] = a[j];
j = j + 1;
}
k = k + 1;
}
while (i <= mid) {
b[k] = a[i];
i = i + 1;
k = k + 1;
}
while (j <= high) {
b[k] = a[j];
j = j + 1;
k = k + 1;
}
for (k = low; k <= high; k++)
a[k] = b[k];
}
void merge_sort(int a[], int low, int high) {
if (low < high) {
int mid = (low + high) / 2;
merge_sort(a, low, mid);
merge_sort(a, mid + 1, high);
merge(a, low, mid, high);
}
}
int main() {
int a[500003];
int n;
ifstream in("algsort.in");
ofstream out("algsort.out");
in >> n;
for (int i = 0; i < n; i++) {
in >> a[i];
}
merge_sort(a, 0, n - 1);
for (int i = 0; i < n; i++) {
out << a[i] << ' ';
}
out.close();
return 0;
}