Idée d'algorithme de tri par fusion :
Diviser - conquérir ; chaque processus récursif implique trois étapes. Premièrement, la décomposition : décomposer la séquence de n éléments à trier en deux sous-séquences, chaque sous-séquence comprenant n/2 éléments.
Deuxièmement, Gouvernance : appelez MergeSort sur chaque sous-séquence séparément et effectuez des opérations récursives. Troisièmement, Fusion : Fusionnez deux sous-séquences triées pour générer des résultats de tri.
public static void mergeSort(int[] a, int[] tmp, int left, int right) { if (left < right) { int mid = left + (right - left) / 2; mid);// Tri à gauche mergeSort(a, tmp, mid + 1, right);// Tri à droite merge(a, tmp, left, mid + 1, right);// Fusionner gauche et droite} }public static void merge(int[] a, int[] tmp, int left, int rightPos, int right) { int leftEnd = rightPos - 1; 1; while (left <= leftEnd && rightPos <= right) { if (a[left] < a[rightPos]) { tmp[tmpPos++] = a[gauche++]; } else { tmp[tmpPos++] = a[rightPos++]; } } while (gauche <= leftEnd) { tmp[tmpPos++] = a[left++]; ] = a[rightPos++]; } pour (int i = 0; i < num; i++, right--) { a[right] = tmp[à droite]; } }Diagramme schématique de l'algorithme de fusion :
Ce qui précède représente l’intégralité du contenu de cet article, j’espère que vous l’aimerez tous.