Реализовать сортировку слиянием на языке Java с помощью объектно ориентированной парадигмы. На вход ваша программа получает массив из чисел, а вернуть должна отсортированный массив.
java
import java.util.Arrays;
public class MergeSort {
public static void main(String[] args) {
int[] array = { 5, 1, 6, 2, 3, 4 };
mergeSort(array);
System.out.println(Arrays.toString(array));
}
public static void mergeSort(int[] array) {
if (array.length <= 1) {
return;
}
int mid = array.length / 2;
int[] left = Arrays.copyOfRange(array, 0, mid);
int[] right = Arrays.copyOfRange(array, mid, array.length);
mergeSort(left);
mergeSort(right);
merge(array, left, right);
}
public static void merge(int[] array, int[] left, int[] right) {
int leftIndex = 0;
int rightIndex = 0;
int mergedIndex = 0;
while (leftIndex < left.length && rightIndex < right.length) {
if (left[leftIndex] < right[rightIndex]) {
array[mergedIndex] = left[leftIndex];
leftIndex++;
} else {
array[mergedIndex] = right[rightIndex];
rightIndex++;
}
mergedIndex++;
}
while (leftIndex < left.length) {
array[mergedIndex] = left[leftIndex];
leftIndex++;
mergedIndex++;
}
while (rightIndex < right.length) {
array[mergedIndex] = right[rightIndex];
rightIndex++;
mergedIndex++;
}
}
}
В этом примере `mergeSort` - это метод, который рекурсивно вызывает себя для сортировки подмассивов `left` и `right`, а затем вызывает метод `merge`, чтобы объединить их в отсортированный массив.
Метод `merge` проходит по двум массивам `left` и `right` и сравнивает элементы, затем помещает их в объединенный массив `array` в соответствии с порядком сортировки.
Обратите внимание, что при объединении массивов мы также обрабатываем случаи, когда один из массивов еще не был полностью обработан (когда одна из переменных `leftIndex` или `rightIndex` все еще меньше длины массива `left` или `right`). Это позволяет объединить элементы, оставшиеся в одном из массивов после завершения одного из циклов while.
Наконец, в методе `main` создается пример массива и вызывается метод `mergeSort`. Затем отсортированный массив выводится на экран с помощью метода `Arrays.toString()`.Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет