Descripción general
La clasificación de burbujas es un algoritmo de clasificación simple. Visita repetidamente la secuencia para ser ordenada, compara dos elementos a la vez y los intercambia si son incorrectos. El trabajo de visitar la secuencia se repite hasta que la secuencia se haya ordenado. El origen de este algoritmo se debe a que cuanto más pequeño sea el elemento lentamente "flotará" al comienzo de la secuencia a través del intercambio.
Para decirlo, es:
La clasificación de burbujas es más que personajes más grandes que se hunden detrás de la matriz (se puede entender como a continuación), y los personajes más pequeños flotan en el frente (arriba).
Diagrama de interpretación intuitiva:
paso
Compare elementos adyacentes. Si el primero es más grande que el segundo, intercambie por los dos.
Haga el mismo trabajo para cada par de elementos adyacentes, comenzando desde el primer par hasta el último par al final. En este punto, el último elemento debería ser el número más grande.
Repita los pasos anteriores para todos los elementos, excepto el último.
Continúe repitiendo los pasos anteriores para cada vez menos elementos cada vez hasta que no haya pares de números que necesiten compararse.
Ejemplo
Datos sin procesar:
3 5 2 6 2
La primera ronda
La comparación de 3 y 5, 5 es mayor que 3, sin intercambio 3 5 2 6 2 Continuar comparando 5 y 2, 5 es mayor que 2, la posición de intercambio 3 2 5 6 2 Continúa comparando 5 y 6, 6 es mayor que 5, sin intercambio 3 2 5 6 2 Continuar 6 y 2, 6 es mayor que 2, la posición de intercambio 3 2 2 2 66 se sumerge hasta el final, ambos emergen hacia arriba (frontal) respectivamente.
Ronda 2
La comparación 3 y 2, 3 es mayor que 2, la posición de intercambio 2 3 5 2 6 Comparación 3 y 5, 5 es mayor que 3, sin intercambio 2 3 5 2 6 Comparación 5 y 2, 5 es mayor que 2, Posición de intercambio 2 3 2 5 No es necesario comparar 5 y 6
La tercera ronda
La comparación 2 y 3, 3 es mayor que 2, sin necesidad de intercambiar 2 3 2 5 6 Comparación 3 y 2, 3 es mayor que 2, no es necesario comparar la posición de intercambio 2 2 3 5 6
Ronda 4
Compare 2 y 2 sin intercambio 2 2 3 5 6
Fin de cuatro rondas
2 2 3 5 6
Implementación del código (Java)
paquete com.coder4j.main.arithmetic.sorting; public class Bubble { / ** * bubble sort * * @param array * @return * / public static int [] sort (int [] array) {int temp; // El primer bucle de capa muestra el número de rondas en comparación, como elementos de longitud, y el número de rondas comparadas es longitud -1 (no es necesario comparar con usted) para (int i = 0; i <array.length - 1; i ++) {system.out.println ("hilo" + (i + 1) + "inicio de rueda"); // La segunda capa de bucle, cada dos comparaciones adyacentes disminuye una vez, y el número de veces disminuye a medida que aumenta el número de rondas. Cada ronda determina la más grande, y no hay necesidad de comparar la más grande para (int j = 0; j <array.length - 1 - i; j ++) {if (array [j+1] <array [j]) {temp = array [j]; matriz [j] = array [j + 1]; matriz [j + 1] = temp; } System.out.println ("th" + (i + 1) + "redondeo", th " + (j + 1) +" comparar: "); for (int k: array) {system.out.print (k +" ");} system.out.println ();} system.out.println (" result: "); para (int k: array) {system.print (k + +") "). } System.out.println ();Resultados de la salida de prueba:
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 4 4 4 4 4 Resultado final 2 2 3 5 6
Después de la prueba, es consistente con los resultados en el ejemplo.