I coded a Merge Sort Algorithm but it does not work

Viewed 50

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);
}
0 Answers
Related