Encontre a mediana de corrida a partir de um fluxo de números inteiros [duplicados]

Duplicata Possível:
Algoritmo mediano de rolagem em C

Dado que os números inteiros são lidos de um fluxo de dados. Encontre mediana de elementos lidos até agora de maneira eficiente.

Solução Eu li: Podemos usar um heap máximo no lado esquerdo para representar elementos que são menores que a mediana efetiva, e um heap mínimo no lado direito para representar elementos que são maiores que a mediana efetiva.

Depois de processar um elemento de entrada, o número de elementos em heaps diferem no máximo em 1 elemento. Quando os dois heaps contêm o mesmo número de elementos, encontramos a média dos dados raiz do heap como mediana efetiva. Quando os heaps não estão balanceados, selecionamos a mediana efetiva da raiz do heap contendo mais elementos.

Mas como construiríamos um heap máximo e um heap mínimo, ou seja, como saberíamos a mediana efetiva aqui? Acho que inseriríamos 1 elemento no heap máximo e, em seguida, o próximo 1 elemento no heap mínimo e assim por diante para todos os elementos. Me corrija Se eu estiver errado aqui.

questionAnswers(8)

yourAnswerToTheQuestion