/ / Métodos de clasificación en la programación: clasificación de burbujas

Métodos de clasificación en la programación: clasificación de burbujas

Сортировка пузырьком не только не считается самым 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.

¿De dónde vino un nombre tan inusual?

clasificación de burbujas

Название метода придумали, используя аналогию с 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.

Descripción del algoritmo

La clasificación de burbujas se realiza de la siguiente manera:

  • primer paso: los elementos de una matriz de números se toman en dos y también se comparan en pares. Si en algunos dos elementos el primer valor es mayor que el segundo, el programa los intercambia;
  • por lo tanto, el número más grande cae al final de la matriz. Si bien todos los demás elementos permanecen, como estaban, en un orden caótico y aún requieren clasificación;
  • por lo tanto, se necesita una segunda pasada: se realiza por analogía con la anterior (ya descrita) y tiene varias comparaciones, menos una;
  • Las comparaciones del pasaje número tres son una menos que la segunda, y dos, que la primera. Y así sucesivamente;
  • para resumir, cada pase tiene (valores totales en la matriz, un número específico) menos (número de pase) comparaciones.

clasificación de burbujas

Aún más corto, el algoritmo del futuro programa puede escribirse así:

  • se verifica una matriz de números hasta que se encuentren dos números, el segundo debe ser mayor que el primero;
  • el programa ubicado incorrectamente en relación con los intercambios de elementos de la matriz entre sí.

Pseudocódigo basado en el algoritmo descrito

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

Desventajas del método.

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.

pascal ordenar por burbuja

Ventajas

Сортировка пузырьком весьма проста для понимания.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.

Claro principio de clasificación

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 de clasificación de burbujas Pascal

algoritmo de clasificación de burbujas

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

Un ejemplo de clasificación de burbujas en C (C)

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;

}.

Me gustó:
0
Publicaciones populares
Desarrollo Espiritual
Comida
yup