Java програма за внедряване на алгоритъм за сортиране на обединяване

В този пример ще се научим да изпълняваме алгоритъм за сортиране на сливане в Java.

За да разберете този пример, трябва да имате познанията по следните теми за програмиране на Java:

  • Java методи
  • Java докато и да … докато 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)) (

Ако искате да научите повече за алгоритъма за сортиране на обединяване, посетете алгоритъм за сортиране на обединяване.

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