Maison >Java >javaDidacticiel >Pourquoi PriorityQueue.toString() ne renvoie-t-il pas les éléments dans un ordre trié ?

Pourquoi PriorityQueue.toString() ne renvoie-t-il pas les éléments dans un ordre trié ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-03 07:17:29236parcourir

Why Doesn't PriorityQueue.toString() Return Elements in Sorted Order?

Comprendre le problème de tri dans PriorityQueue.toString

PriorityQueue, une structure de données basée sur un tas binaire, maintient les éléments dans un ordre partiellement trié . Bien qu'il garantisse que l'élément à la racine représente celui ayant la priorité la plus élevée, les éléments restants dans le tas peuvent ne pas être entièrement triés.

Dans ce cas spécifique, PriorityQueue est utilisé pour stocker une liste de nœuds. , chacun représentant un caractère et sa fréquence. Le HuffmanComparator est chargé de déterminer la priorité de chaque nœud en fonction de sa fréquence, les nœuds de fréquence inférieure ayant une priorité plus élevée.

Analyse de la sortie

Lors de l'appel de PriorityQueue.toString , il convertit simplement la structure du tas interne en une représentation sous forme de chaîne. Cela n’implique pas de tri ni d’ordre supplémentaire des éléments. Par conséquent, la sortie peut ne pas refléter l'ordre de tri souhaité.

Solution : interroger les éléments de manière itérative

Pour obtenir une liste triée d'éléments de PriorityQueue, il est nécessaire d’interroger chaque élément de manière itérative. L'interrogation consiste à supprimer l'élément de priorité la plus élevée du tas et à réorganiser les éléments restants pour conserver la propriété du tas. En interrogeant les éléments à plusieurs reprises, l'ordre des éléments affichés sera progressivement trié.

Exemple de code

Voici une version modifiée du code qui interroge les éléments et les imprime de manière itérative les dans l'ordre trié :

<code class="java">while (!queue.isEmpty()) {
    System.out.println(queue.poll());
}</code>

Cette méthode garantit que les éléments de sortie sont triés en fonction de la priorité déterminée par le HuffmanComparator.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn