Есть две проблемы, с которыми я сталкиваюсь в этом коде.
Первая проблема - это бесконечный цикл, возникший из 77 ~ 79.Когда я изменю эти тестовые данные и вместо этого использую метод слияния, я получу бесконечный цикл, и R1 изменится на 4198739. Но если я использую метод mergeSort, проблема не будет отображаться, как ожидалось.Как показано ниже:
int M = 2;
int R1 = 4;
int arr[] = {3,9,8,20};
merge(arr, L, M, R1);
Вторая проблема произошла от 57 до 69 строк. В этом методе mergeSort я попытался разделить массив unorder на подмассив.Однако на исходный массив это никак не влияет.
Вот мой код. Сортировка слиянием в C
void mergeSort(int arr[], int L, int R)
{
if(L<R) {
return ;
} else {
int M = (L+R) / 2;
mergeSort(arr, L, M);
mergeSort(arr, M+1, R);
merge(arr, L, M+1 ,R);
}
}