Привет, меня зовут Иван и я хочу поделиться с вами своим опытом реализации сортировки слиянием на языке Java.
Для начала, нужно написать метод mergeSort, который будет принимать массив целых чисел и сортировать его с помощью сортировки слиянием. Вот как это будет выглядеть⁚
public class MergeSort {
public static int[] mergeSort(int[] arr) {
if (arr.length < 1) { // базовый случай⁚ если массив пустой или содержит только один элемент, то он уже отсортирован
return arr;
}
int mid arr.length / 2; // находим середину массива
int[] left new int[mid]; // создаем левую часть массива
int[] right new int[arr.length ‒ mid]; // создаем правую часть массива
// копируем элементы в левую и правую части массива
for (int i 0; i < mid; i ) {
left[i] arr[i];
}
for (int i mid; i < arr.length; i ) {
right[i ― mid] arr[i];
}
// рекурсивно вызываем mergeSort для сортировки левой и правой частей массива
left mergeSort(left);
right mergeSort(right);
// вызываем метод merge для объединения отсортированных частей массива
return merge(left, right);
}
public static int[] merge(int[] left, int[] right) {
int[] merged new int[left.length right.length];
int i 0, j 0, k 0;
// сравниваем элементы левой и правой части массива и помещаем их в объединенный массив сортируя их
while (i < left.length nn j < right.length) {
if (left[i] < right[j]) {
merged[k ] left[i ];
} else {
merged[k ] right[j ];
}
}
// добавляем оставшиеся элементы в объединенный массив
while (i < left.length) {
merged[k ] left[i ];
}
while (j < right.length) {
merged[k ] right[j ];
}
return merged;
}
}
Теперь, чтобы проверить работу метода, мы можем создать массив и вызвать метод mergeSort⁚
public class Main {
public static void main(String[] args) {
int[] a {5, 1, 6, 2, 3, 4};
int[] sortedArray MergeSort.mergeSort(a);
System.out.println(Arrays.toString(sortedArray));
}
}
В результате выполнения программы, мы получим отсортированный массив [1, 2, 3, 4, 5, 6].
В итоге, реализация сортировки слиянием на языке Java достаточно проста и эффективна. Этот алгоритм обладает сложностью O(n log n), что делает его хорошим выбором для сортировки больших массивов.