0
Я пытаюсь написать базовое слияние сверху вниз, но массив не полностью отсортирован после завершения кода. Я попытался отладить его, но вся рекурсия затрудняет определение. Я также попытался сравнение моего кода других примеров сортировки слияния, но у меня не было никакой удачи в поиске каких-либо различийНеверная реализация Mergesort
private void mergeSort(int[] arr) {
int[] aux = new int[arr.length];
sort(arr, aux, 0, arr.length - 1);
}
private void sort(int[] arr, int[] aux, int lo, int hi) {
if(hi <= lo)
return;
int mid = lo + ((hi - lo)/2);
sort(arr, aux, lo, mid);
sort(arr, aux, mid + 1, hi);
merge(arr, aux, lo, mid, hi);
}
private void merge(int[] arr, int[] aux, int lo, int mid, int hi) {
for(int i = lo;i <= hi;i++)
aux[i] = arr[i];
int x = lo;
int y = mid + 1;
for(int i = lo; i <= hi; i++){
if(x > mid) arr[i] = aux[y++];
else if(y > hi) arr[i] = aux[x++];
else if(aux[y] < aux[i]) arr[i] = aux[y++];
else arr[i] = aux[x++];
}
}
Я бы поднял верх, если бы мог, спасибо! – user3618426