public static void mergeSort(int[] array, int low, int high) {
if (high - low < 2) {
return;
}
int mid = (low + high) >>> 1;
mergeSort(array, low, mid);
mergeSort(array, mid, high);
int[] b = Arrays.copyOfRange(array, low, mid);
for (int i = low, j = mid, k = 0; k < b.length; i++) {
if (j == high || b[k] <= array[j]) {
array[i] = b[k++];
} else {
array[i] = array[j++];
}
}
}
Я понимаю, как он работает визуально, но на коде, мне очень трудно здесь сориентироваться. Объясните подробно, что и как тут работает.