Aperçu
Le tri des bulles est un algorithme de tri simple. Il visite à plusieurs reprises la séquence à tri, compare deux éléments à la fois et les échange s'ils sont incorrects. Le travail de visite de la séquence est répété jusqu'à ce que la séquence ait été triée. L'origine de cet algorithme est due au fait que plus l'élément "flottera lentement" au début de la séquence via l'échange.
Pour le dire simplement, c'est:
Le tri des bulles est plus que des personnages plus grands qui coulent derrière le tableau (peuvent être compris comme ci-dessous), et des personnages plus petits flottent à l'avant (ci-dessus).
Diagramme d'interprétation intuitif:
étape
Comparez les éléments adjacents. Si le premier est plus grand que le second, échangez-les contre les deux.
Faites le même travail pour chaque paire d'éléments adjacents, à partir de la première paire à la dernière paire à la fin. À ce stade, le dernier élément devrait être le plus grand nombre.
Répétez les étapes ci-dessus pour tous les éléments sauf le dernier.
Continuez à répéter les étapes ci-dessus pour de moins en moins d'éléments à chaque fois jusqu'à ce qu'il n'y ait pas de paires de nombres qui doivent être comparés.
Exemple
Données brutes:
3 5 2 6 2
Le premier tour
En comparant 3 et 5, 5 est supérieur à 3, aucun échange 3 5 2 6 2 Continuez à comparer 5 et 2, 5 est supérieur à 2, position d'échange 3 2 5 6 2 Continuez à comparer 5 et 6, 6 est supérieure à 5, aucun échange 3 2 5 6 2 Continuez à comparer 6 et 2, 6 est supérieur à 2, la position d'échange 3 2 5 2 66 puits à l'extrémité, les deux émergent (avant) respectivement.
Round 2
La comparaison 3 et 2, 3 est supérieure à 2, position d'échange 2 3 5 2 6 Comparaison 3 et 5, 5 est supérieure à 3, aucun échange 2 3 5 2 6 comparaison 5 et 2, 5 est supérieur à 2, position d'échange 2 3 2 5 6 Pas besoin de comparer 5 et 6
Le troisième tour
La comparaison 2 et 3, 3 est supérieure à 2, pas besoin d'échanger 2 3 2 5 6 Comparaison 3 et 2, 3 est supérieure à 2, pas besoin de comparer la position d'échange 2 2 3 5 6
Round 4
Comparez 2 et 2 sans échange 2 2 3 5 6
Quatre tours se terminent
2 2 3 5 6
Implémentation du code (Java)
package com.coder4j.main.arithmetic.sortant; classe publique bubble {/ ** * bubble tri * * @param array * @return * / public static int [] srie (int [] array) {int temp; // La première boucle de couche montre le nombre de tours comparés, tels que les éléments de longueur, et le nombre de tours comparés est la longueur-1 (pas besoin de se comparer avec vous-même) pour (int i = 0; i <array.length - 1; i ++) {System.out.println ("thread" + (i + 1) + "start"); // La deuxième couche de boucle, chaque deux comparaisons adjacentes diminue une fois, et le nombre de fois diminue à mesure que le nombre de tours augmente. Chaque tour détermine le plus grand, et il n'est pas nécessaire de comparer le plus grand pour (int j = 0; j <array.length - 1 - i; j ++) {if (array [j + 1] <array [j]) {temp = array [j]; Array [J] = Array [J + 1]; Array [J + 1] = temp; } System.out.println ("Th" + (i + 1) + "Round" "Th" + (J + 1) + "Compare:"); for (int k: array) {System.out.print (k + "");} System.out.println ();} System.out.println ("Résultat:"); pour (int k: Arriy) {System.out.print (K +; for (int k: array) # } System.out.println ();} Return Array;} Public Static Void Main (String [] Args) {int [] Array = {3, 2, 6, 2};Résultats de la sortie de test:
2 3 5 6 6 3 3 5 6 3 3 3 5 6 3 3 3 5 6 3 3 3 5 6 3 3 3 5 6 3 3 3 5 6 3 3 3 5 6 3 3 3 5 6 3 3 3 5 6 3 3 3 5 6 3 3 3 5 6 3 3 3 5 6 4 3 3 5 6 4 4 4 4 4 4 5 6 4 4 4 4 4 4 4 5 6 4 4 4 4 4 4 4 4 4 4 5 6 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 Résultat final 2 2 3 5 6
Après les tests, il est cohérent avec les résultats de l'exemple.