Los kth cuantiles de un conjunto de n elementos son las estadísticas de orden k - 1 que dividen el conjunto ordenado en k conjuntos de igual tamaño (dentro de 1). Proporcione un algoritmo O (n lg k) -time para enumerar los kth cuantiles de un conjunto.Encontrar los kth cuantiles de un conjunto de n elementos. (Del cormen)
La solución directa sería seleccionar cada k, 2k, 3k .. ik el elemento más pequeño, cuyo tiempo de ejecución es O (kn) (k llama al procedimiento de selección de O (n)). Pero esto se puede optimizar para hacerlo mejor que O (kn). Después de encontrar la mediana de las medianas en el índice 'i' en el procedimiento de selección, realizamos la siguiente llamada recursiva.
si el índice de la mediana de las medianas i es> k, de forma recursiva llamar seleccionar el k-ésimo elemento más pequeño en el subconjunto izquierdo A [0 ... i]
si el i es < k, selecciono la forma recursiva n - i + k el elemento más pequeño en el subcampo derecho A [i + 1 ... n].
¿Pueden las llamadas recursivas anteriores modificarse como a continuación, lo que reduciría el factor 'k' a 'log k'?
si el índice de la mediana de las medianas i es> k, recursivamente selecciona el k-ésimo elemento más pequeño en el subcampo izquierdo A [0 ... i] y también recursivamente selecciona el n-k-ésimo elemento más pequeño en el subcampo derecho A [i + 1 ... n].
si el i es < k, recursivamente selecciona el n - i + k el elemento más pequeño del subarreglo derecho A [i + 1 ... n] y también selecciona recursivamente el k ésimo elemento más pequeño en el subcampo izquierdo A [ 0 ... i].
La llamada principal sería simplemente seleccionar (A, k, n).
¿Qué tan lejos lo consiguió por su cuenta antes de pedir ayuda? –
Downvoters, por favor, dejen un comentario. Supongo que votó negativamente la pregunta, porque no muestra qué ha hecho el usuario472402 para resolverla y dónde quedó atascada. –
Amigos de Hai, disculpen por no proporcionar ningún fondo sobre dónde estoy atascado. Soy bastante nuevo en el blog :) La solución directa sería seleccionar todos los elementos k, 2k, .. ik th. El tiempo de ejecución sería O (kn). Estoy pensando en cómo reducir el factor k para registrar k. Pero no estoy obteniendo nada concluyente. Por favor ayuda – user472402