Estoy leyendo CLRS y tuve algún problema con el ejercicio 6.5-8.probar el algoritmo que usa min-heap para combinar k listas ordenadas
Dé un O (n lg k) -Tiempo algoritmo para combinar k ordenados listas en una sola lista ordenada, donde n es el número total de elementos en todas las entradas listas. (Pista: utilizar un min0heap para k vías fusión.)
La solución es, como dice todo el mundo,
1) construir un elemento k min-montón usando el primer elemento de las listas K,
2) extraer-min() para obtener el elemento más pequeño de la pila y añadirlo a la lista de resultados,
3) recoger el siguiente elemento de la misma lista como el que acaba de extraer a partir de el montón Insertarlo en el montón y volver 2).
Entiendo que el tiempo es O (n lg k), pero no obtengo la corrección de la opción en el paso 3). Es parece obvio, pero ¿hay alguna prueba formal?
Creo que la complejidad sería O (k * n * lg k) en su lugar. –