¿Cuál es la explicación teórica más fácil posible sobre el algoritmo de clasificación de burbujas y el programa que usa C, ya que soy un viejo estudiante de 50 años completamente nuevo en programación?

El “tipo de burbuja” es extremadamente ineficiente, pero se enseña como un ejercicio de programación básico porque el estudiante obtiene una práctica valiosa en matrices, lógica condicional, bucles, organización de códigos, etc.

Considere una lista de los números 57, 7, 95, 34 y 11 que desea ordenar de menor a mayor. De izquierda a derecha, compara los números de dos en dos, intercambiando el par de números si no están en el orden correcto.

Después del primer pase, el número más grande ha “burbujeado” en el extremo derecho. Repite con una segunda pasada a través de los datos, omitiendo el elemento del extremo derecho ya que está en su posición final.

Continúe con el tercer y cuarto pases, acortando cada pase en 1, hasta que se hayan ordenado todos los números.

A continuación, tengo los números dispuestos verticalmente en lugar de izquierda a derecha. Estudie cada comparación por pares y su resultado en la siguiente columna.

Imagina que tienes una baraja barajada. Ponlo delante de ti. Boca arriba o abajo, no importa. Toma la carta superior y ponla boca arriba en una pila nueva. toma la siguiente carta y compárala con la carta superior de la nueva pila. Si es menor (primero mire el traje – espadas, corazones, diamantes, tréboles – luego el valor, as bajo) luego déjelo encima, de lo contrario póngalo en la parte inferior. Repite este proceso, comparando la nueva carta con cada una de las cartas de arriba hacia abajo hasta llegar a una carta con un valor más alto o llegar al fondo de la pila. Cuando la primera pila está vacía, ya está.

Así es básicamente cómo funciona, pero con algunas complicaciones.

Primero, solo hay una pila. Tienes un marcador, un trozo de papel, que te dice dónde están las dos pilas, la sin clasificar debajo de la ordenada. A continuación, realiza la clasificación desde abajo. El tipo funciona poniendo otro trozo de papel con el primero. Este te dice dónde estás. Sacas la carta superior debajo de los pedazos de papel. Ahora las cosas se vuelven un poco irreales. La gravedad deja de funcionar, y las cartas sobre la que has sacado no se caen. debes comparar cada carta desde abajo con la que has sacado y moverla hacia abajo hasta que llegues a una que sea menor que la que sacaste, o al tope de la pila. Luego pones la tarjeta que sacaste en el espacio. El segundo pedazo de papel es hacer un seguimiento de dónde está la brecha. Luego mueves el primer trozo de papel una tarjeta hacia abajo y repites el proceso. Las tarjetas se ordenan cuando ya no puede mover el primer trozo de papel.

Se llama clasificación de burbujas, porque el agujero burbujea en el lugar correcto. La razón por la que tenemos un montón es para ahorrar espacio. Solo necesitamos memoria de la computadora para toda la pila, una tarjeta que está burbujeando y los pedazos de papel.

Un tipo de burbuja (también llamado tipo de cribado o hundimiento) no es muy eficiente, pero es fácil de entender.

Tiene una lista de elementos que desea ordenar con un cierto número de elementos. Comienza en la primera posición de su lista A (1) y compara ese valor con el elemento en la siguiente posición A (2). Si A (1) es mayor que A (2), se intercambian. Luego pasas a A (2) y lo comparas con A (3) … Eventualmente comparará A (n-1) y A (n). Una vez que haya hecho ese par, regrese al principio y comience nuevamente.

Eventualmente, la lista estará en orden y habrá recorrido la lista sin intercambiar ningún par. En ese momento, sabe que ha terminado de ordenar la lista.

Esto funciona bien si la lista está casi ordenada para empezar, pero si está en orden inverso, llevará mucho tiempo.

Aquí hay un pseudocódigo para mostrar aproximadamente cómo funcionaría esto.

Matriz A # Te dejo para poner las entradas en …
Tamaño = tamaño de (A)
Intercambio = verdadero

Si Swap es verdadero {
Intercambio = falso
Artículo = 1
Mientras que el artículo Si A (artículo)> A (artículo + 1) {
TempItem = A (artículo)
A (artículo) = A (artículo + 1)
A (artículo + 1) = elemento de temperatura
Intercambio = verdadero
}
Artículo = Artículo + 1
}
}

Espero que eso tenga sentido para ti.

Aquí hay una muy buena explicación visual del algoritmo de clasificación de burbujas con la danza popular húngara 🙂

More Interesting

Cómo mejorar la estructura de datos Graph en la programación competitiva

Cómo identificar la recursividad en un problema de programación

¿Cómo debo hacer para que una matriz de objetos Bullet pueda colisionar con una matriz de objetos Zombie?

Cómo mostrar que O (max {f (n), g (n)}) = O (f (n) + g (n))

Cómo enviar una matriz unidimensional a una función y tener esa misma matriz (posición en la memoria) convertida en una matriz bidimensional en C ++

¿Cómo funciona el algoritmo de adsorción?

¿Cómo demostramos que un gráfico conectado con n nodos y más de n-1 aristas debe contener ciclo?

Cómo elegir el algoritmo de selección de funciones correcto

¿Cuáles son algunos buenos nombres de variables / métodos junto con la descripción donde encajan?

¿Cuáles son algunas de las mejores grandes empresas y startups para trabajar en Silicon Valley si te apasionan los algoritmos y la codificación?

Si tengo un buen conocimiento de Java, C ++, algoritmos y estructuras de datos y quiero ser un profesional independiente. ¿Cuánto puede ganar alguien con estas habilidades?

Cómo resolver el problema de 'cortar el árbol' en HackerRank

Dado N monedas para dos jugadores que juegan un juego. Cada jugador puede elegir 1 o 2 monedas en un turno. El jugador que recoge las últimas monedas gana. Si juegan de manera óptima, ¿qué jugador ganará el juego?

¿Es correcto: 100n + log (n) = O (n + (log (n)) ^ 2)?

Cómo aprender a ser bueno al traducir el problema inicial en un problema de coincidencia gráfica bipartita