Pagini recente » Cod sursa (job #2354143) | Cod sursa (job #2759040) | Cod sursa (job #1774605) | Cod sursa (job #77457) | Cod sursa (job #2354670)
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int n;
void mergeUtil(int a[], int low, int mid, int high) {
int len1 = mid - low + 1;
int len2 = high - mid;
int L[len1], R[len2];
int i, j, k;
for (i = 0; i < len1; i++) {
L[i] = a[low + i];
}
for (i = 0; i < len2; i++) {
R[i] = a[mid + i + 1];
}
i = j = 0;
k = low;
while (i < len1 && j < len2) {
if (L[i] < R[j]) {
a[k++] = L[i++];
}
else {
a[k++] = R[j++];
}
}
while(i < len1) {
a[k++] = L[i++];
}
while (j < len2) {
a[k++] = R[j++];
}
}
void mergesort(int a[], int low, int high) {
int mid = low + (high - low) / 2;
if (low < high) {
mergesort(a, low, mid);
mergesort(a, mid + 1, high);
mergeUtil(a, low, mid, high);
}
}
int main() {
fin >> n;
int a[n];
for (int i = 0; i < n; i++) {
fin >> a[i];
}
mergesort(a, 0, n - 1);
for (int i = 0; i < n; i++) {
fout << a[i] << ' ';
}
return 0;
}