243 Shares 5748 views

técnicas de programación en la clasificación: clasificación de "burbuja"

ordenamiento de burbuja no sólo es considerado como el método más rápido, por otra parte, se cierra la lista de las maneras más lentos para organizarse. Sin embargo, tiene sus ventajas. Por lo tanto, el método de clasificación de la burbuja – la mayoría de los que tampoco es una solución natural y lógica al problema, si desea organizar los elementos en un orden específico. Una persona ordinaria manualmente, por ejemplo, que los usará – sólo por la intuición.

Donde hizo un nombre tan inusual?

nombre del método se acercó, usando la analogía de burbujas de aire en el agua. Es una metáfora. Así como pequeñas burbujas de aire suban hacia arriba – porque su densidad es mayor que un fluido (en este caso – el agua), y cada elemento de la matriz, menor es el valor, la forma más gradual a la parte superior de los números de la lista.

Descripción del algoritmo

burbuja de clasificación se realiza de la siguiente manera:

  • primero pase: los elementos de los números de matriz es tomada por los dos pares y también compararon. Si algunos elementos del equipo de dos hombres primer valor es mayor que el segundo, el programa les hace casas de cambio;
  • en consecuencia, el mayor número de no alcanza la final de la matriz. Mientras que todos los demás elementos permanecen como estaban, de una manera caótica, y requieren más de clasificación;
  • y por lo tanto requieren un segundo pase: se hace por analogía con el anterior (ya descrita) y tiene un número de comparaciones – menos uno;
  • en el paso número tres comparaciones, uno menos que la segunda, y los dos, que el primero. Y así sucesivamente;
  • resumir que cada pasaje tiene (todos los valores de la matriz, el número particular) menos comparaciones (número de pases).

algoritmo aún más corta de un programa se puede escribir como:

  • una matriz de números se comprueba el tiempo que se encuentran dos números, la segunda de ellas está destinada a ser mayor que el primero;
  • incorrectamente posicionado en relación con los demás elementos de las permutas de software array.

Pseudocódigo basado en el algoritmo descrito

La implementación más simple se lleva a cabo de la siguiente manera:

procedimiento Sortirovka_Puzirkom;

principio

ciclo para j de nachalnii_index a konechii_index;

ciclo para i de nachalnii_index a konechii_index-1;

si massiv [i]> massiv [i + 1] (primer elemento mayor que un segundo), entonces:

(Modificar coloca valores);

final

Por supuesto, esta simplicidad sólo agrava la situación: cuanto más simple el algoritmo, más se manifiesta todos los defectos. tasa de inversión de tiempo es demasiado grande incluso para una pequeña gama (aquí viene en la relatividad: La cantidad de tiempo para el profano puede parecer pequeña, pero, de hecho, un programador cada segundo o incluso milisegundo cuenta).

Se tomó la mejor aplicación. Por ejemplo, teniendo en cuenta el cambio de los valores en los lugares de la matriz:

procedimiento Sortirovka_Puzirkom;

principio

sortirovka = true;

ciclo hasta sortirovka = true;

sortirovka = false;

ciclo para i de nachalnii_index a konechii_index-1;

si massiv [i]> massiv [i + 1] (primer elemento mayor que un segundo), entonces:

(Cambiar los elementos lugares);

sortirovka = true; (Identificado que el cambio se ha hecho).

Fin.

limitaciones

La principal desventaja – la duración del proceso. ¿Cuánto tiempo se lleva a cabo algoritmo de ordenación burbuja?

El plazo de ejecución se calcula a partir del número de números cuadrados en la matriz – el resultado final de la misma es proporcional.

Si el peor de los casos la matriz se pasa tantas veces, ya que tiene menos elementos de un valor. Esto sucede porque al final no es sólo un elemento, que no tienen nada que comparar, y el último pase a través de la matriz se convierte en acción inútil.

Además, método eficaz de clasificación de un intercambio simple, como se le llama, sólo para arrays de tamaño pequeño. Grandes cantidades de datos con la ayuda de proceso no funcionará: el resultado será o bien un error o fracaso del programa.

dignidad

ordenamiento de burbuja es muy fácil de entender. Los planes de estudio de las universidades técnicas en el estudio de los elementos de pedido de su gama pase en el primer lugar. El método es fácil de implementar tanto el lenguaje Delphi programación (L (Delphi), y la C / C ++ (C / C plus plus), un increíblemente simples valores de algoritmo de localización en el orden correcto y en el Pascal (Pascal). Ordenamiento de burbuja es ideal para principiantes.

Debido a los inconvenientes del algoritmo no se utiliza en los propósitos extracurriculares.

Visual principio de clasificación

La vista inicial de la matriz 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 ordenar burbuja en Pascal

ejemplo:

kol_mas const = 10;

var massiv: array [1..kol_mas] de número entero;

a, b, k: número entero;

empezar

writeln ( 'entrada', kol_mas, 'elementos de array');

para a: = 1 a kol_mas hacer readln (massiv [a ]);

para un: = 1 a kol_mas-1 comenzará hacer

para b: = a + 1 a kol_mas do begin

Si massiv [a]> massiv [ b] luego comenzar

k: = massiv [a]; massiv [a]: = massiv [ b]; massiv [b]: = k;

terminar;

terminar;

terminar;

writeln ( 'después de tipo');

para a: = 1 a kol_mas hacer writeln (massiv [a ]);

final.

burbuja Ejemplo de clasificación en lenguaje 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;

for (i = 7; i> 0; i -) {

si (massiv [i] <massiv [i- 1]) {

swap (massiv [i], massiv [i- 1]);

ff ++;

}

}

si (ff == 0) break;

}

getch (); // retardo de visualización

return 0;

}.