Код: Выделить всё
class FirstClass {
public static void divide(int[] arr) {
if(arr.length == 1) {
return;
}
int mid = arr.length/2;
int[] leftHalf = new int[mid];
int[] rightHalf = new int[arr.length - mid];
for(int i = 0; i < mid; i++) {
leftHalf[i] = arr[i];
}
for(int i = mid; i < arr.length; i++) {
rightHalf[i - mid] = arr[i];
}
divide(leftHalf);
divide(rightHalf);
merge(arr, leftHalf, rightHalf);
}
public static void merge(int[] arr, int[] leftHalf, int[] rightHalf) {
int i = 0, j = 0, k = 0;
while(i < leftHalf.length && j < rightHalf.length) {
if(leftHalf[i] < rightHalf[j]) {
arr[k] = leftHalf[i];
i++;
} else {
arr[k] = rightHalf[j];
j++;
}
k++;
}
while(i < leftHalf.length) {
arr[k] = leftHalf[i];
k++; i++;
}
while(j < rightHalf.length) {
arr[k] = rightHalf[j];
k++; j++;
}
System.out.println(Arrays.toString(arr));
}
public static void main(String[] args) {
int[] arr = {1,3,6,8,3,0,6};
divide(arr);
}
}
[3, 6]
[1, 3, 6]
[3, 8]
[0, 6]
[0, 3, 6, 8]
[0, 1, 3, 3, 6, 6, 8]
Наконец он печатает правильный отсортированный массив, но также печатает еще несколько массивов, и я не знаю, как это исправить.
Подробнее здесь: https://stackoverflow.com/questions/787 ... hm-in-java