Possível duplicado:
rolando o algoritmo mediano em C
Dado que números inteiros são lidos de um fluxo de dados. Encontre a mediana dos elementos lidos até agora de maneira eficiente.
Solução que li: Podemos usar um heap máximo no lado esquerdo para representar elementos menores que a mediana efetiva e um heap mínimo no lado direito para representar elementos que são maiores que a mediana efetiva.
Após o processamento de um elemento recebido, o número de elementos nos heaps diferem no máximo por 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 equilibrados, selecionamos a mediana efetiva da raiz do heap que contém mais elementos.
Mas como construiríamos um heap máximo e um heap mínimo, como saberíamos a mediana efetiva aqui? Eu acho que inseriríamos 1 elemento no max-heap e, em seguida, o próximo 1 elemento no min-heap, e assim por diante para todos os elementos. Corrija-me Se eu estiver errado aqui.