Problema resuelto al detalle
-
Predicción exacta del recuento de intercambios de la ordenación de burbuja en 64 elementos invertidos 7 pasos
Ejecute la carrera en el preajuste invertido — 64 elementos, los mayores primero. Prediga el número de intercambios de la ordenación por burbuja exactamente, no su orden de crecimiento; luego diga qué impide que cualquier algoritmo de intercambio de vecinos lo supere.
-
Una inversión es un par que se encuentra en un orden relativo incorrecto. La entrada invertida es el caso extremo: para cada i < j el elemento anterior es el mayor, de modo que cada par está invertido y el recuento abarca a todos ellos. Obtener este número antes de que nada se mueva resulta ser todo el problema.
-
La ordenación por burbuja solo intercambia elementos adyacentes, y únicamente cuando están desordenados. Dicho intercambio corrige ese par en concreto y no altera ningún otro, ya que los dos elementos que se mueven mantienen la misma relación con todo lo que queda fuera de ellos. Un intercambio, una inversión: nunca dos, nunca ninguna.
-
Estar ordenado significa cero inversiones. Comenzar en 2.016 y eliminar exactamente una por intercambio no deja margen de maniobra: el número de intercambios resulta forzado. El panel muestra 2.016 intercambios, y eso es una identidad más que una cota del peor caso.
-
Las comparaciones son un recuento independiente que aquí resulta coincidir. La pasada i recorre j = 0 … 62 − i, por lo que el total es 63 + 62 + ⋯ + 1, los mismos 2.016 que muestra la fila peor caso de burbuja n(n−1)/2. Que los recuentos sean iguales significa que cada una de las comparaciones encontró una inversión, que es lo que significa "peor caso" aquí. El contador bajo el título de cada panel cuenta un paso por comparación más uno por intercambio, de modo que marca paso 0 / 4.032 antes de empezar, y el botón › consume exactamente uno de esos pasos por clic. La O(n²) junto al título es una etiqueta, no un recuento.
-
Ahora generalice el paso 2, porque esto es lo que aprovecha quicksort. Intercambiar dos elementos separados d posiciones deja intacto en total todo par formado con un elemento fuera del intervalo: dicho elemento se vuelve a comparar con el otro extremo, las dos comparaciones se intercambian y su contribución no cambia. Lo que puede cambiar es el propio par, más los 2(d − 1) pares que cada extremo forma con las d − 1 entradas intermedias. Como máximo pueden eliminarse 2d − 1 inversiones por intercambio, y fijar d = 1 recupera la única inversión del paso 2.
-
La primera partición de quicksort toma el elemento central como pivote, a[31] = 33, e intercambia (0, 63), (1, 62), … , (31, 32): 32 intercambios a distancias 63, 61, … , 1. El paso 5 limita su efecto combinado a 2.016 inversiones, y esa única pasada deja el vector completamente ordenado, por lo que se eliminaron exactamente 2.016. El límite se alcanza con igualdad: cada uno de los 32 intercambios logró su propio máximo.
-
Por tanto, los dos algoritmos no compiten en ingenio, sino en alcance. Las 334 comparaciones y 64 intercambios impresos de quicksort suman los 398 de su contador, y solo 32 de esos intercambios mueven algo, siendo los otros 32 el pivote intercambiado consigo mismo en tramos que ya están ordenados. Sus 334 comparaciones también quedan por debajo de la referencia impresa n·log₂n de 384, porque el elemento central de una secuencia invertida es su mediana, por lo que cada división es equitativa.
Respuesta
2.016 intercambios y 2.016 comparaciones: los 4.032 pasos del contador. Y 2.016 no es un dato propio de la ordenación por burbuja: es una cota inferior para toda una familia. Cualquier algoritmo limitado a intercambiar elementos adyacentes —ordenación por inserción, ordenación de coctelera, ordenación gnomo o uno que nadie haya escrito aún— elimina como máximo una inversión por intercambio según el paso 2, por lo que todos ellos necesitan al menos 2.016 intercambios con esta entrada y todos ellos son Ω(n²) en datos invertidos debido al modelo en el que trabajan, no porque sean torpes. Quicksort escapa de esa cota inferior al permitírsele mover un elemento 63 posiciones a la vez: 2.016 inversiones eliminadas mediante 32 intercambios reales suponen 63 inversiones por intercambio, y el paso 5 afirma que eso es lo máximo que cualquier intercambio individual a esa distancia podría haber logrado. El panel no calcula ni el recuento de inversiones ni la cota inferior que este implica.
-
Ruta de aprendizaje
Contar trabajo, no segundos
Referencias (1)
- Insight block 3 — quicksort as its author published it: C. A. R. Hoare, "Quicksort." The Computer Journal 5(1), 10–16, 1962. The algorithm first appeared the year before as C. A. R. Hoare, "Algorithm 64: Quicksort", Communications of the ACM 4(7), 321, 1961.