„Java“ programa sujungimo rūšiavimo algoritmui įgyvendinti

Šiame pavyzdyje mes išmoksime vykdyti „Java“ suliejimo rūšiavimo algoritmą.

Norėdami suprasti šį pavyzdį, turite žinoti šias Java programavimo temas:

  • „Java“ metodai
  • „Java“ ir daryk … o „Loop“
  • „Java“ masyvai

Pavyzdys: „Java“ programa sujungimo rūšiavimo algoritmui įgyvendinti

 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 rezultatas

 Nerūšiuotas masyvas: (6, 5, 12, 10, 9, 1) Rūšiuotas masyvas: (1, 5, 6, 9, 10, 12)

Čia masyvo elementai yra rūšiuojami didėjimo tvarka. Jei norime rūšiuoti elementus mažėjančia tvarka, tada pirmoje metodo whilekilpoje merge()kodą galime pakeisti taip:

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

Jei norite sužinoti daugiau apie suliejimo rūšiavimo algoritmą, apsilankykite „Sujungti rūšiavimo algoritmą“.

Įdomios straipsniai...