Tri de bulles: c'est pour organiser les éléments dans un tableau dans l'ordre de grand à petit ou de petit à grand.
Var Array = [9,8,7,6,5,4,3,2,1];
Comparaison du premier tour: 8,7,6,5,4,3,2,1,9 échangé 8 fois i = 0 j = array.length-1-i
Comparaison du deuxième tour: 7,6,5,4,3,2,1,8,9 échangé 7 fois i = 1 j = array.length-1-i
La comparaison du troisième tour: 6,5,4,3,2,1,7,8,9 échange 6 fois i = 2 j = array.length-1-i
Comparaison du 4e tour: 5,4,3,2,1,6,7,8,9 échangé 5 fois i = 3 j = array.length-1-i
Comparaison du cinquième tour: 4,3,2,1,5,6,7,8,9 échangé 4 fois i = 4 j = array.length-1-i
Comparaison du sixième tour: 3,2,1,4,5,6,7,8,9 échangé 3 fois i = 5 j = array.length-1-i
Round de la 7e: 2,1,3,4,5,6,7,8,9 échangé 2 fois i = 6 j = array.length-1-i
8th Round Comparon: 1,2,3,4,5,6,7,8,9 échangé 1 fois i = 7 j = array.length-1-i
Implémentation du code:
var temp; var array = [9,8,7,6,5,4,3,2,1]; // nombre de tours de contrôle de boucle externe pour (var i = 0; i <array.length-1; i ++) {// nombre de temps de comparaison de boucle interne pour (var j = 0; j <array.Length-1-i; j ++) {if (array [j] // échange deux variables temp = array [j]; Array [J] = Array [J + 1]; Array [J + 1] = temp; }}} console.log (array);Optimisation du code:
var temp, bool, m = 0; var array = [9,8,7,6,5,4,3,2,1]; for (var i = 0; i <array.length-1; i ++) {// commutateur bool dans le principe d'ouverture et de fermeture bool = true; pour (var j = 0; j <array.length-1-i; j ++) {if (array [j]> array [j + 1]) {// échanger deux variables temp = array [j]; Array [J] = Array [J + 1]; Array [J + 1] = temp; bool = false; // commutateur le commutateur}} // si la boucle intérieure n'est pas exécutée (le commutateur est désactivé, exécutez l'instruction suivante); if (bool) {break; } m ++;} console.log (array + ", comparer" + m + "roue");Remarque: Le meilleur cas de tours de comparaison est de 0 tours, et le pire des cas est 8 tours.
Regardons un algorithme de tri à bulles
// Tri de bulles JavaScript, et l'ajouter directement au prototype du type de base // ici, nous utilisons un code d'essence de langage javascript pour ajouter des méthodes au prototype de type de base. // Parce que le tableau et la chaîne eux-mêmes sont des constructeurs, ils créent des objets via la nouvelle ligne de constructeur, donc array.prototype et string.prototype tout pointer vers la fonction.prototype // lorsque Array.Method, d'abord, l'objet de fonction de l'array n'est pas toujours if (! this.prototype [name]) {// Il est préférable de juger s'il y a d'abord cette méthode dans le prototype. Si this.prototype [name] = func; } retourne ceci; }; Array.method ('bubble', function () {// L'algorithme de bulle boucle la longueur du tableau au total, c'est-à-dire le Len Times, et le plus petit est mis au dernier var len = this.length; var i = 0, j = 0, tmp = 0; pour (i = 0; i <len; i ++) {pour (j = 0; (j +1) {Console.log () if (j]> this [j + 1]) {tmp = this [j]; alerte ([21,32,1,31,22,45,68,37,]. Bubble ());J'ai regardé le code d'un autre ingénieur frontal, Xifeng Shouma. Dans la première couche de For Loop, un drapeau d'échange d'échange est faux. Lorsqu'il y a un échange, cela devient vrai. Un jugement est ajouté après la deuxième couche de Loop se termine. S'il est faux, c'est-à-dire qu'il n'y a pas d'échange d'avant en arrière, et cela prouve que l'ordre de taille est correct, vous pouvez casser pour sauter de l'extérieur pour la boucle.
// Arrays qui doivent être triés var list = array (23, 45, 18, 37, 92, 13, 24); // la longueur du tableau var n = list.length; // variables temporaires dans l'échange d'ordre var tmp; //// échange induller var échange; // à la plupart des commandes N-1 pour (var temps = 0; temps <n - 1; temps ++) {Exchange = false; for (var i = n - 1; i> time; i-) {if (list [i] <list [i - 1]) {Exchange = true; tmp = list [i - 1]; list [i]; list [i] = tmp; }} // S'il n'y a pas d'échange dans cet ordre, l'algorithme est terminé tôt si (! Exchange) {Break; }} alert ('Array trié est:' + list + ', n a été organisé en total' + temps + 'marche');J'ai déjà collecté un algorithme de l'intérêt, ce qui est assez bon. Veuillez y jeter un œil.
fonction bubblesort (array) {var longueur = array.length; Var Temp; var issort = false; pour (var i = 1; i <length; i ++) {issort = false; pour (var j = 0; j <longueur - i; j ++) {if (array [j]> array [j + 1]) {// swap temp = array [j]; Array [J] = Array [J + 1]; Array [J + 1] = temp; issort = true; }} if (! issort) Break; // Si aucun échange ne se produit, quittez la boucle}} var array = [10, -3,5,34, -34,5,0,9]; Bubblesort (tableau); for (var i = 0; i <array.length; i ++) {document.write (array [i] + ""); }D'accord, résumons cela pour vous aujourd'hui. J'espère qu'il sera utile pour les amis d'apprendre le tri des bulles JavaScript.