Vous pouvez utiliser un min-max médiane tas pour trouver le minimum, maximum et médiane de la constante de temps (et de prendre le temps linéaire pour construire le tas). Vous pouvez utiliser la commande-statistiques des arbres pour trouver le k-ième plus petit/plus grand valeur. Ces deux structures de données sont décrites dans le présent document de min-max des tas [lien pdf]. Min-max des tas binaires tas qui alternent entre min-tas-max-tas.
Le papier: Un min-max médiane tas est un tas binaire, avec les propriétés suivantes:
1) La médiane de tous les éléments est situé à la racine
2) Le sous-arbre gauche de la racine est un min-max tas Hl de la taille de plafond[((n-1)/2)] contenant des éléments est inférieure ou égale à la médiane. Le sous-arbre droit est un max-min tas Rh de la taille de l'étage[((n-1)/2)] ne contenant que des éléments supérieure ou égale à la médiane.
Le document explique comment construire un segment de mémoire.
Edit: en lisant le papier de manière plus approfondie, il semble que la construction du min-max médiane des tas nécessite tout d'abord de trouver la médiane (FTA: "Trouver la médiane de l'ensemble de n éléments à l'aide de tout l'un de l'linéaire connue algorithmes temps"). Cela dit, une fois que vous avez construit le tas, vous pouvez maintenir la médiane simplement par le maintien de l'équilibre entre le min-max tas sur la gauche et le max-min tas sur la droite. DeleteMedian remplace la racine avec le min max-min tas ou le max du min-max tas (selon le maintient de l'équilibre).
Donc, si vous prévoyez sur l'utilisation d'un min-max médiane tas pour trouver la médiane d'un fixe de l'ensemble de données, vous êtes SOL, mais si vous l'utilisez sur l'évolution de l'ensemble de données, il est possible.