#include "sort_.h"
void print_array(int *arr, int n)
{
if(n==0){
printf("ERROR: Array length is ZERO\n");
return;
}
printf("%d", arr[0]);
for (int i=1; i<n; i++) {
printf(" %d", arr[i]);
}
printf("\n");
}
int* merge_array(int *arr1, int n1, int* arr2, int n2)
{
int* res;
res = new int[n1 + n2];
int a1 = 0, a2 = 0;
int index = 0;
for (int i = 0; i < n1+n2; i++) {
if (i < n1) {
res[i] = arr1[i];
}
else {
res[i] = arr2[i - n1];
}
}
sort(res, res + n1 + n2);
return res;
}
int* merge_sort(int *arr, int n)
{
int mid = n / 2;
if (mid > 0) {
int* arr1 = new int[mid];
int n1 = mid;
int n2 = n - mid;
int* arr2 = new int[n2];
for (int i = 0; i < n; i++) {
if (i < mid) {
arr1[i] = arr[i];
}
else {
arr2[i - mid] = arr[i];
}
}
merge_sort(arr1, n1);
merge_sort(arr2, n - mid);
merge_array(arr1, n1, arr2, n2);
}
else
{
return merge_array(arr, n, NULL, 0);
}
}