Программа на Java для реализации алгоритма сортировки слиянием

В этом примере мы научимся выполнять алгоритм сортировки слиянием на Java.

Чтобы понять этот пример, вы должны знать следующие темы программирования Java:

  • Методы Java
  • Java while и do … while Loop
  • Массивы Java

Пример: Java-программа для реализации алгоритма сортировки слиянием

 import java.util.Arrays; // Merge sort in Java class Main ( // Merge two sub arrays L and M into array void merge(int array(), int p, int q, int r) ( int n1 = q - p + 1; int n2 = r - q; int L() = new int(n1); int M() = new int(n2); // fill the left and right array for (int i = 0; i < n1; i++) L(i) = array(p + i); for (int j = 0; j  = <(j)) while (i < n1 && j < n2) ( if (L(i) <= M(j)) ( array(k) = L(i); i++; ) else ( array(k) = M(j); j++; ) k++; ) // When we run out of elements in either L or M, // pick up the remaining elements and put in A(p… r) while (i < n1) ( array(k) = L(i); i++; k++; ) while (j < n2) ( array(k) = M(j); j++; k++; ) ) // Divide the array into two sub arrays, sort them and merge them void mergeSort(int array(), int left, int right) ( if (left < right) ( // m is the point where the array is divided into two sub arrays int mid = (left + right) / 2; // recursive call to each sub arrays mergeSort(array, left, mid); mergeSort(array, mid + 1, right); // Merge the sorted sub arrays merge(array, left, mid, right); ) ) public static void main(String args()) ( // created an unsorted array int() array = ( 6, 5, 12, 10, 9, 1 ); Main ob = new Main(); // call the method mergeSort() // pass argument: array, first index and last index ob.mergeSort(array, 0, array.length - 1); System.out.println("Sorted Array:"); System.out.println(Arrays.toString(array)); ) ) 

Выход 1

 Несортированный массив: (6, 5, 12, 10, 9, 1) Отсортированный массив: (1, 5, 6, 9, 10, 12)

Здесь элементы массива отсортированы по возрастанию. Если мы хотим отсортировать элементы в порядке убывания, то внутри первого whileцикла merge()метода мы можем изменить код следующим образом:

 // the less than sign is changed to greater than if (L(i)>= M(j)) (

Если вы хотите узнать больше об алгоритме сортировки слиянием, посетите раздел Алгоритм сортировки слиянием.

Интересные статьи...