Clasificación de burbujas: es organizar los elementos en una matriz en orden de gran a pequeño o pequeño a pequeño.
matriz var = [9,8,7,6,5,4,3,2,1];
Comparación de primera ronda: 8,7,6,5,4,3,2,1,9 intercambiada 8 veces i = 0 J = Array.length-1-I
Comparación de segunda ronda: 7,6,5,4,3,2,1,8,9 intercambiada 7 veces i = 1 J = Array.length-1-I
La comparación de la tercera ronda: 6,5,4,3,2,1,7,8,9 intercambio 6 veces I = 2 J = Array.length-1-I
Comparación de la cuarta ronda: 5,4,3,2,1,6,7,8,9 intercambiado 5 veces i = 3 J = Array.length-1-I
Comparación de la quinta ronda: 4,3,2,1,5,6,7,8,9 intercambiado 4 veces i = 4 J = Array.length-1-I
Comparación de la sexta ronda: 3,2,1,4,5,6,7,8,9 intercambiada 3 veces i = 5 J = Array.length-1-I
Comparación de la 7ª ronda: 2,1,3,4,5,6,7,8,9 intercambiada 2 veces i = 6 J = Array.length-1-I
Comparación de la octava ronda: 1,2,3,4,5,6,7,8,9 intercambiado 1 tiempo i = 7 j = matriz.length-1-i
Implementación del código:
var temp; var array = [9,8,7,6,5,4,3,2,1]; // número de rondas de control de bucle externo para (var i = 0; i <array.length-1; i ++) {// número de tiempos de comparación de control de bucle interno para (var j = 0; j <array.length-1-i; j ++) {if (array [j]> [j+1] variables temp = array [j]; matriz [j] = array [j+1]; matriz [j+1] = temp; }}} console.log (array);Optimización del 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 ++) {// cambia bool en el principio de apertura y cierre bool = true; for (var j = 0; j <array.length-1-i; j ++) {if (array [j]> array [j+1]) {// intercambia dos variables temp = array [j]; matriz [j] = array [j+1]; matriz [j+1] = temp; bool = false; // Switch el interruptor}} // Si el if en el bucle interno no se ejecuta (el conmutador está cerrado, ejecute la siguiente declaración); if (bool) {break; } m ++;} console.log (array+", comparar"+m+"rueda");Nota: El mejor caso de las rondas de comparación es de 0 rondas, y el peor de los casos es de 8 rondas.
Veamos un algoritmo de clasificación de burbujas
// clasificación de burbujas de JavaScript, y agréguelo directamente al prototipo del tipo básico // aquí usamos un código de esencia de lenguaje JavaScript para agregar métodos al prototipo de tipo básico. // Debido a que la matriz y la cadena son constructores, crean objetos a través de la nueva línea de constructor, por lo que Array.Prototype y String.Prototype All Point to function.prototype // When Array.method, el objeto de función de primer acceso de acceso, no hay ningún método método, entonces array.prototype todavía no existe, y luego function.prototype Function.prototipo. if (! this.prototype [name]) {// Es mejor juzgar si existe este método en el prototipo primero. If este.prototype [name] = func; } devolver esto; }; Array.method ('bubble', function () {// El algoritmo de burbujas buce la longitud de la matriz en total, es decir, tiempos de len, y el más pequeño se coloca en el último var = this.length; var i = 0, j = 0, tmp = 0; for (i = 0; i <len; i ++) {para (j = 0; (J +1) <len- i; je) {console.log () if (this [j]> this [j+1]) {tmp = this [j]; alerta ([21,32,1,31,22,45,68,37,]. Bubble ());Miré el código de otro ingeniero frontal, Xifeng Shouma. En la primera capa de For Loop, un indicador de intercambio de Exchange es falso. Cuando hay un intercambio, se hace cierto. Se agrega un juicio después de la segunda capa de For Bucle Finals. Si es falso, es decir, no hay intercambio de adelante hacia atrás, y demuestra que el orden de tamaño es correcto, puede romper para saltar del bucle externo.
// matrices que deben ordenarse var list = array (23, 45, 18, 37, 92, 13, 24); // longitud de matriz var n = list.length; // variables temporales en el orden var tmp; /// Exchange Flag Var Exchange; // a la mayoría de los N -1 Ordenamiento para (Var Time = 0; Tiempo <n - 1; Tiempo ++) {Exchange = False; for (var i = n - 1; i> time; i-) {if (list [i] <list [i - 1]) {intercambio = true; tmp = list [i - 1]; lista [i]; lista [i] = tmp; }} // Si no hay intercambio en este orden, el algoritmo se termina temprano if (! Exchange) {break; }} alert ('Array Sorted es:' + List + ', N se ha organizado en total' + Time + 'Walk');He recopilado un algoritmo de redizen antes, lo cual es bastante bueno. Por favor, échale un vistazo.
function bubblesort (array) {var longitud = array.length; var temp; var issort = false; for (var i = 1; i <longitud; i ++) {issort = false; for (var j = 0; j <longitud - i; j ++) {if (array [j]> array [j+1]) {// swap temp = array [j]; matriz [j] = array [j+1]; matriz [j+1] = temp; issort = true; }} if (! issort) ruptura; // Si no ocurre ningún intercambio, salga del bucle}} var array = [10, -3,5,34, -34,5,0,9]; Bubblesort (matriz); for (var i = 0; i <array.length; i ++) {document.write (array [i]+""); }Bien, resumamos esto para ti hoy. Espero que sea útil para los amigos aprender la clasificación de burbujas de JavaScript.