El enfoque Median of medians
es muy popular en los algoritmos de partición tipo quicksort
para proporcionar un pivote bastante bueno, de modo que particione uniformemente el conjunto. Su lógica se da en Wikipedia como:Explicación del algoritmo Median of Medians
El pivote elegido es menor y mayor que la mitad de los elementos en la lista de medianas, que es alrededor de n/10 elementos (1/2 * (n/5))) para cada mitad. Cada uno de estos elementos es una mediana de 5, por lo que es menos de 2 elementos y más de 2 elementos más fuera del bloque. Por lo tanto, el pivote tiene menos de 3 (n/10) elementos fuera del bloque y más de 3 elementos (n/10) fuera del bloque. Por lo tanto, la mediana elegida divide los elementos en algún lugar entre 30%/70% y 70%/30%, lo que asegura el peor comportamiento lineal del algoritmo.
¿Alguien puede explicarlo un poco lúcidamente para mí? Me resulta difícil entender la lógica.
Sólo otra pregunta, ¿cómo hace esta garantía método que este número será la mediana ? La mediana es un número que divide la matriz en la mitad superior e inferior. Entonces, ¿qué significa esta figura 30-30-70? – SexyBeast
Bueno, la mediana está en el medio, pero 'm' (en el texto de arriba) no es la mediana de todos los números. Es la mediana de solo 1/5 de los números (que a su vez son medianas de grupos de 5 elementos más pequeños). Intenta leer el último párrafo con más atención. Al final, donde se concluye que 'm' es más grande que al menos' 3n/10' de los números, bueno, eso se traduce en 'm' es más grande que al menos 30% de los números.Entonces, al final, va como 'm' es más grande que al menos 30% y más pequeño que al menos otro 30%. Queda un 40% de lo que no estamos seguros. – Shahbaz
Entonces, ¿cómo es que da una partición 50-50 en promedio? La partición 50-50 está dada por la mediana normal, ¿verdad? – SexyBeast