Classificação de bolhas: é organizar os elementos em uma matriz em ordem de grande a pequena ou pequena a grande.
var Array = [9,8,7,6,5,4,3,2,1];
Comparação da primeira rodada: 8,7,6,5,4,3,2,1,9 trocado 8 vezes i = 0 j = Array.length-1-i
Comparação da segunda rodada: 7,6,5,4,3,2,1,8,9 trocado 7 vezes i = 1 j = array.length-1-i
A terceira rodada comparação: 6,5,4,3,2,1,7,8,9 Swap 6 vezes i = 2 j = Array.length-1-i
Comparação da 4ª rodada: 5,4,3,2,1,6,7,8,9 trocada 5 vezes i = 3 j = Array.length-1-i
Comparação da quinta rodada: 4,3,2,1,5,6,7,8,9 trocada 4 vezes i = 4 j = array.length-1-i
Comparação da sexta rodada: 3,2,1,4,5,6,7,8,9 trocada 3 vezes i = 5 j = Array.length-1-i
Comparação da 7ª rodada: 2,1,3,4,5,6,7,8,9 trocada 2 vezes i = 6 j = Array.length-1-i
Comparação da 8ª rodada: 1,2,3,4,5,6,7,8,9 trocada 1 vez i = 7 j = Array.length-1-i
Implementação de código:
var temp; var Array = [9,8,7,6,5,4,3,2,1]; // Número de rodadas de controle de loop externo para (var i = 0; i <array.length-1; i ++) {// número de lixos internos de comparação de lixos (var j = 0; variáveis temp = matriz [j]; array [j] = array [j+1]; matriz [j+1] = temp; }}} console.log (Array);Otimização de código:
var temp, bool, M = 0; var Array = [9,8,7,6,5,4,3,2,1]; para (var i = 0; i <Array.Length-1; i ++) {// Switch bool no princípio de abertura e fechamento bool = true; for (var j = 0; j <Array.Length-1-i; J ++) {if (Array [j]> Array [J+1]) {// Troque duas variáveis temp = array [j]; array [j] = array [j+1]; matriz [j+1] = temp; bool = false; // alternar o switch}} // se o se no loop interno não for executado (o interruptor é fechado, execute a seguinte instrução); if (bool) {break; } m ++;} console.log (array+", compare"+m+"roda");Nota: O melhor caso de rodadas de comparação é de 0 rodadas e o pior caso é de 8 rodadas.
Vejamos um algoritmo de classificação de bolhas
// JavaScript Bubble Classing e a adiciona diretamente ao protótipo do tipo básico // aqui usamos um código de essência da linguagem JavaScript para adicionar métodos ao protótipo de tipo básico. // Como a matriz e a sequência são construtores, eles criam objetos através da nova linha do construtor, então Array.Prototype e String.Prototype todos apontam para function.prototype // Quando Array.method, First Access Array O próprio objeto de função, não existe o método do método. if (! this.prototype [nome]) {// é melhor julgar se existe esse método no protótipo primeiro. Se this.prototype [nome] = func; } retornar isso; }; Array.method ('Bubble', function () {// O algoritmo de bolhas lança o comprimento da matriz no total, ou seja, os tempos e o menor é colocado no último var len = this.length; var i = 0, J = 0, tmp = 0; para (i = 0; i <Len; i+; {Console.Log () se (j] alerta ([21,32,1,31,22,45,68,37,]. Bubble ());Eu olhei para o código de outro engenheiro de front-end, Xifeng Shouma. Na primeira camada do loop, um sinalizador de troca é falso. Quando há uma troca, ela se torna verdadeira. Um julgamento é adicionado após a segunda camada das extremidades do loop. Se for falso, ou seja, não há troca de frente para trás e prova que a ordem de tamanho está correta, você pode quebrar para sair da parte externa para loop.
// Matrizes que precisam ser classificadas var list = matriz (23, 45, 18, 37, 92, 13, 24); // Comprimento da matriz var n = list.length; // for (var i = n - 1; i> time; i-) {if (list [i] <list [i - 1]) {Exchange = true; tmp = lista [i - 1]; lista [i]; lista [i] = tmp; }} // Se não houver troca nesta ordem, o algoritmo será encerrado precocemente if (! Exchange) {break; }} alert ('A matriz classificada é:' + list + ', n foi organizada no total' + time + 'Walk');Eu colecionei um algoritmo de internautas antes, o que é muito bom. Por favor, dê uma olhada nisso.
função bubblesort (matriz) {var comprimento = array.length; var temp; var Issort = false; for (var i = 1; i <comprimento; i ++) {Issort = false; for (var j = 0; j <comprimento - i; j ++) {if (array [j]> array [j+1]) {// trocar temp = array [j]; array [j] = array [j+1]; matriz [j+1] = temp; isStort = true; }} if (! ISSort) quebra; // Se houver troca, saia do loop}} var Array = [10, -3,5,34, -34,5,0,9]; Bubblesort (matriz); for (var i = 0; i <array.length; i ++) {document.write (array [i]+""); }Ok, vamos resumir isso para você hoje. Espero que seja útil para os amigos aprenderem a classificação de bolhas de JavaScript.