I have tried coding a merge-sort algorithm using recursion but it doesn't work
Eg:
INPUT: 3 7 2 9 8 1 4 6 5 10
OUTPUT: 2 3 7 32767 -477269867 32767 0 1879048192 0 1879048192
I have created 2 functions: 'merge_sort' and 'merge'.
void merge_sort(int arr[], int low, int high)
{
if (low == high)
{
return;
}
int mid = (low + high) / 2;
merge_sort(arr, low, mid);
merge_sort(arr, mid + 1, high);
merge(arr, low, high);
}
void merge(int arr[], int low, int high)
{
int mid = (low + high) / 2;
int i = low;
int j = mid + 1;
int *arr_temp = (int *)malloc((high - low + 1) * sizeof(int));
int k = 0;
while (i <= mid && j <= high)
{
if (arr[i] <= arr[j])
{
arr_temp[k] = arr[i];
i++;
k++;
}
else
{
arr_temp[k] = arr[j];
j++;
k++;
}
}
while (i <= mid)
{
arr_temp[k] = arr[i];
i++;
k++;
}
while (j <= high)
{
arr_temp[k] = arr[j];
j++;
k++;
}
for (int t = low; t <= high; t++)
{
arr[t] = arr_temp[t];
}
free(arr_temp);
}