Pagini recente » Cod sursa (job #493345) | Cod sursa (job #332357) | Cod sursa (job #3226746) | Cod sursa (job #1282184) | Cod sursa (job #1532948)
#include <cstdio>
using namespace std;
const int MAX = 5e5 + 5;
int array[MAX], length;
void merge(int array[], int left, int mid, int right) {
int aux_array[100], k = 1, i = left, j = mid + 1;
while (i <= mid && j <= right)
if (array[i] < array[j])
aux_array[k++] = array[i++];
else aux_array[k++] = array[j++];
while (i <= mid)
aux_array[k++] = array[i++];
while (j <= right)
aux_array[k++] = array[j++];
for (int iteraux = 1, iter = left; iter <= right; iter++, iteraux++)
array[iter] = aux_array[iteraux];
}
void merge_sort(int array[], int left, int right) {
if (left == right)
return;
int mid = (left + right) / 2;
merge_sort(array, left, mid);
merge_sort(array, mid + 1, right);
merge(array, left, mid, right);
}
int main( ) {
freopen("algsort.in", "r", stdin);
freopen("algsort.out", "w", stdout);
scanf("%d\n", &length);
for (int i = 1; i <= length; i++)
scanf("%d ", &array[i]);
merge_sort(array, 1, length);
for (int i = 1; i <= length; i++)
printf("%d ", array[i]);
return 0;
}