Programme Java pour implémenter l'algorithme de tri par fusion

Dans cet exemple, nous allons apprendre à exécuter l'algorithme de tri par fusion en Java.

Pour comprendre cet exemple, vous devez avoir la connaissance des rubriques de programmation Java suivantes:

  • Méthodes Java
  • Java pendant et faire… en boucle
  • Tableaux Java

Exemple: programme Java pour implémenter l'algorithme de tri par fusion

 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)); ) ) 

Sortie 1

 Tableau non trié: (6, 5, 12, 10, 9, 1) Tableau trié: (1, 5, 6, 9, 10, 12)

Ici, les éléments du tableau sont triés par ordre croissant. Si nous voulons trier les éléments par ordre décroissant, alors à l'intérieur de la première whileboucle de la merge()méthode, nous pouvons changer le code comme:

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

Si vous souhaitez en savoir plus sur l'algorithme de tri par fusion, consultez Algorithme de tri par fusion.

Articles intéressants...