Pagini recente » Cod sursa (job #2317716) | Cod sursa (job #1162638) | Cod sursa (job #2269013) | Cod sursa (job #3181472) | Cod sursa (job #2984141)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int n, a[500001];
void merge(int arr[], int left, int mid, int r) {
int nr_arr1 = mid - left + 1;
int nr_arr2 = r - mid;
int v1[nr_arr1], v2[nr_arr2],i = 0, j= 0, cnt;
for (int i = 0; i < nr_arr1; i++)
v1[i] = arr[left + i];
for (int j = 0; j < nr_arr2; j++)
v2[j] = arr[mid + j + 1];
cnt = left;
while (i < nr_arr1 && j < nr_arr2) {
if (v1[i] <= v2[j]) {
arr[cnt++] = v1[i];
i++;
} else {
arr[cnt++] = v2[j];
j++;
}
}
while (i < nr_arr1) {
arr[cnt++] = v1[i];
i++;
}
while (j < nr_arr2) {
arr[cnt++] = v2[j];
j++;
}
}
void mergeSort(int arr[], int left, int right) {
if (left < right) {
int m = (left+right)/2;
mergeSort(arr, left, m);
mergeSort(arr, m + 1, right);
merge(arr, left, m, right);
}
}
int main() {
f>>n;
for (int i=1;i<=n;i++) f >> a[i];
mergeSort(a,1,n);
for (int i=1;i<=n;i++) g << a[i] << " ";
return 0;
}