Duplicata possible:
Algorithme de médiane mobile en C
Étant donné que les entiers sont lus dans un flux de données. Trouvez la médiane des éléments lus jusqu'à présent de manière efficace.
Solution que j'ai lue: nous pouvons utiliser un tas max sur le côté gauche pour représenter les éléments qui sont inférieurs à la médiane effective, et un tas min sur le côté droit pour représenter les éléments qui sont supérieurs à la médiane effective.
Après avoir traité un élément entrant, le nombre d'éléments en tas diffère au maximum de 1 élément. Lorsque les deux tas contiennent le même nombre d'éléments, nous trouvons la moyenne des données racines du tas comme médiane efficace. Lorsque les tas ne sont pas équilibrés, nous sélectionnons la médiane effective dans la racine du tas contenant plus d'éléments.
Mais comment pourrions-nous construire un tas max et un tas min, c'est-à-dire comment pourrions-nous connaître la médiane efficace ici? Je pense que nous insérerions 1 élément dans max-heap puis le prochain élément dans min-heap, et ainsi de suite pour tous les éléments. Corrigez-moi si je me trompe ici.