Сортировка пузырьком не только не считается самым por el método rápido, además, cierra la lista de las formas más lentas de ordenar. Sin embargo, tiene sus ventajas. Entonces, ordenar por el método de burbuja es la solución más lógica y natural para el problema, si necesita organizar los elementos en un cierto orden. Una persona común y corriente, por ejemplo, lo usará con precisión, simplemente por intuición.
Название метода придумали, используя аналогию с burbujas de aire en el agua. Esta es una metáfora. Al igual que las pequeñas burbujas de aire se elevan, debido a que su densidad es mayor que la de cualquier líquido (en este caso, agua), cada elemento de la matriz, cuanto menor es su valor, más gradualmente llega al comienzo de la lista de números.
La clasificación de burbujas se realiza de la siguiente manera:
Aún más corto, el algoritmo del futuro programa puede escribirse así:
La implementación más simple es la siguiente:
Procedimiento Ordenar burbujas;
El comienzo
ciclo para bien de índice_inicio hasta índice_final;
ciclo para y de índice_inicio hasta end_index-1;
si massiv [i]> massiv [i + 1] (el primer elemento es más grande que el segundo), entonces:
(cambiar valores en lugares);
El fin
Конечно, здесь простота только усугубляет situación: cuanto más simple es el algoritmo, más aparecen todos los defectos. El tiempo es demasiado grande incluso para una matriz pequeña (la relatividad entra en juego: para un laico, la cantidad de tiempo puede parecer pequeña, pero en el negocio del programador cada segundo o incluso milisegundos cuenta).
Tomó una mejor implementación. Por ejemplo, teniendo en cuenta el intercambio de valores en una matriz en lugares:
Procedimiento Ordenar burbujas;
El comienzo
clasificación = verdadero;
ciclo todavía clasificación = verdadero;
clasificación = falso
ciclo para y de índice_inicio hasta end_index-1;
si massiv [i]> massiv [i + 1] (el primer elemento es más grande que el segundo), entonces:
(elementos de intercambio);
clasificación = verdadero; (indicó que se realizó el intercambio).
El final
El principal inconveniente es la duración del proceso. ¿Cuánto tiempo lleva el algoritmo de clasificación de burbujas?
El tiempo de ejecución se calcula a partir del cuadrado del número de números en la matriz; el resultado final es proporcional a él.
En el peor de los casos, la matriz se atravesarátantas veces como haya elementos en él menos un valor. Esto sucede porque al final solo queda un elemento que no tiene nada con lo que comparar, y el último paso a través de la matriz se convierte en una acción inútil.
Además, un método eficiente para la clasificación simpleintercambios, como también se le llama, solo para matrices pequeñas. No será posible procesar grandes cantidades de datos con su ayuda: el resultado será errores o un mal funcionamiento del programa.
Сортировка пузырьком весьма проста для понимания.En los planes de estudio de las universidades técnicas, cuando se estudia el orden de los elementos de una matriz, se aprueba primero. El método se implementa fácilmente tanto en el lenguaje de programación Delphi (D (Delphi) como en C / C ++ (C / C plus plus), un algoritmo increíblemente simple para organizar los valores en el orden correcto y en Pascal (Pascal). La clasificación de burbujas es ideal para principiantes.
Debido a deficiencias, el algoritmo no se utiliza con fines extracurriculares.
La vista inicial de la matriz es 8 22 4 74 44 37 1 7
Paso 1 8 22 4 74 44 37 1 7
8 22 4 74 44 1 37 7
8 22 4 74 1 44 37 7
8 22 4 1 74 44 37 7
8 22 1 4 74 44 37 7
8 1 22 4 74 44 37 7
1 8 22 4 74 44 37 7
Paso 2 1 8 22 4 74 44 7 37
1 8 22 4 74 7 44 37
1 8 22 4 7 74 44 37
1 8 22 4 7 74 44 37
1 8 4 22 7 74 44 37
1 4 8 22 7 74 44 37
Paso 3 1 4 8 22 7 74 37 44
1 4 8 22 7 37 74 44
1 4 8 22 7 37 74 44
1 4 8 7 22 37 74 44
1 4 7 8 22 37 74 44
Paso 4 1 4 7 8 22 37 44 74
1 4 7 8 22 37 44 74
1 4 7 8 22 37 44 74
1 4 7 8 22 37 44 74
Paso 5 1 4 7 8 22 37 44 74
1 4 7 8 22 37 44 74
1 4 7 8 22 37 44 74
Paso 6 1 4 7 8 22 37 44 74
1 4 7 8 22 37 44 74
Paso 7 1 4 7 8 22 37 44 74
Ejemplo:
const kol_mas = 10;
var massiv: matriz [1..kol_mas] de entero;
a, b, k: entero;
comenzar
writeln ("input", kol_mas, "elementos de la matriz");
para a: = 1 a kol_mas do readln (massiv [a]);
para a: = 1 a kol_mas-1 comienza
para b: = a + 1 a kol_mas comienzan
si massiv [a]> massiv [b] entonces comience
k: = massiv [a]; massiv [a]: = massiv [b]; massiv [b]: = k;
fin
fin
fin
writeln ("después de ordenar");
para a: = 1 a kol_mas do writeln (massiv [a]);
fin
Ejemplo:
#include
#include
int main (int argc, char * argv [])
{
int massiv [8] = {36, 697, 73, 82, 68, 12, 183, 88}, i, ff;
para (;;) {
ff = 0;
para (i = 7; i> 0; i -) {
if (massiv [i]
swap (massiv [i], massiv [i-1]);
ff ++;
}
}
if (ff == 0) descanso;
}
getch (); // retraso de pantalla
devuelve 0;
}.