Para encontrar la mediana de una matriz no ordenada, podemos hacer un montón mínimo en tiempo para elementos, y luego podemos extraer uno por uno elementos para obtener la mediana. Pero este enfoque llevaría tiempo .
¿Podemos hacer lo mismo por algún método en tiempo? Si podemos, ¿cómo?

Respuestas:
Este es un caso especial de un algoritmo de selección que se puede encontrar el -ésimo elemento más pequeño de una matriz con k es la media del tamaño de la matriz. Hay una implementación que es lineal en el peor de los casos.k k
Algoritmo de selección genérico
En primer lugar vamos a ver un algoritmok
find-kthque encuentra el -ésimo elemento más pequeño de una matriz:La función
split(A, pivot)devuelveL,Rtal que todos los elementos enRson mayores quepivotyLtodos los demás (menos una aparición depivot). Entonces todo se hace de forma recursiva.Esto es en promedio pero O ( n 2 ) en el peor de los casos.O ( n ) O ( n2)
El peor caso lineal: el algoritmo de mediana de medianas
Un mejor pivote es la mediana de todas las medianas de subconjuntos
Ade tamaño 5, al llamar al procedimiento en el conjunto de estas medianas.Esto garantiza en todos los casos. No es tan obvio. Estas diapositivas de PowerPoint son útiles tanto para explicar el algoritmo como para la complejidad.O ( n )
Tenga en cuenta que la mayoría de las veces el uso de un pivote aleatorio es más rápido.
fuente
5estándar? ¿Qué pasa si el tamaño de A es menor que 5?return A[k]es incorrecto (a menos queAse ordene lo que haría que el algoritmo sea discutible). Sisplitsucedió dividir deAtal manera quek = |L| + 1todavía no sabes dónde está elkelemento th. Su caso base es cuando|A| = 1aún necesita hacer una de las dos llamadas recursivas.La idea principal del algoritmo es utilizar el muestreo. Tenemos que encontrar dos elementos que estén muy juntos en el orden ordenado de la matriz y que tengan la mediana entre ellos. Vea la referencia [MU2017] para una discusión completa.
[MU2017] Michael Mitzenmacher y Eli Upfal. "Probabilidad e informática: aleatorización y técnicas probabilísticas en algoritmos y análisis de datos", capítulo 3, páginas 57-62. Cambridge University Press, segunda edición, 2017.
fuente