Description de l'algorithme: Pour un ensemble donné d'enregistrements, fusionnez d'abord toutes les deux sous-séquences adjacentes de la longueur 1 pour obtenir N / 2 (arrondi vers le haut) sous-séquences ordonnées de longueur 2 ou 1, puis les fusionner en paires, et répéter ce processus jusqu'à ce qu'une séquence ordonnée soit obtenue.
Tri de package; / ** * Merge Tri * moyen O (nlong), meilleur o (nlogn), pire o (nlogn); complexité de l'espace o (n); écurie; plus complexe * @author zeng * * / classe publique Mergesort {public static void fusion (int [] a, int start, int mid, int fin) {int [] tmp = new int [a.Length]; System.out.println ("fusionner" + start + "~" + end); int i = start, j = mid + 1, k = start; (a [i] <a [j]) tmp [k ++] = a [i ++]; else tmp [k ++] = a [j ++];} while (i! = mid + 1) tmp [k ++] = a [i ++]; while (j! = end + 1) tmp [k ++] = a [j ++]; for (i = start; i <= end; i ++) a [i] = tmp [i]; for (int p: a) system.print (p + " "); System.out.println ();} static void Mergesort (int [] a, int start, int end) {if (start <end) {int mid = (start + end) / 2; Mergesort (a, start, mid); // ordonna Mergesort (a, mid + 1, end); // ordonnance de Merge (a, start, mid, fin);}} public static void seride. {int [] b = {49, 38, 65, 97, 76, 13, 27, 50}; Mergesort (b, 0, b.length - 1);}}Jetons un coup d'œil aux résultats de l'opération:
Résumer
Ce qui précède est tout le contenu de cet article sur l'implémentation simple du tri de fusion des algorithmes de tri Java. J'espère que ce sera utile à tout le monde. Les amis intéressés peuvent continuer à se référer à d'autres sujets connexes sur ce site. S'il y a des lacunes, veuillez laisser un message pour le signaler. Merci vos amis pour votre soutien pour ce site!