Cet article présente des tas, une structure de données spécialisée en forme d'arbre étroitement liée aux piles, aux files d'attente et aux arbres. Les tas maintiennent la propriété tas : la valeur d'un nœud parent est toujours commandée par rapport aux valeurs de ses enfants. Les concepts clés incluent les capuchons max, les mine et les files d'attente prioritaires.
Prise des clés:
SplHeap
, SplMaxHeap
, SplMinHeap
et SplPriorityQueue
pour la gestion des tas. Les files d'attente prioritaires, souvent basées sur un tas, trouvent l'utilisation dans les bureaux de service et les algorithmes de graphique. tas en détail:
MAX-HAAPS Placez la plus grande valeur à la racine, les parents toujours plus grands ou égaux à leurs enfants. Les caprices min sont l'inverse. PHP's SPL fournit des outils pour tous ces types. Un exemple maximum:
Les tas, bien que souvent binaires, n'ont pas l'ordre inhérent aux arbres binaires. Les opérations de base incluent: Créer, IsEmpty, Insérer et Extraire (en supprimant la racine). L'extraction de la racine d'un tas laisse un semi -ah , nécessitant une restructuration. Cela se fait en déplaçant le dernier nœud vers la racine puis en "rangeant" la nouvelle racine jusqu'à ce que la propriété du tas soit restaurée.
Implémentation de tas basée sur le tableau:
Un binaire max-heap peut être implémenté à l'aide d'un tableau. Le code PHP suivant le démontre:
<?php class BinaryHeap { protected $heap; // ... (rest of the code as provided in the input) ... } ?>
L'insertion ajoute un élément à la fin et le «ruisselle» à sa position correcte. L'extraction supprime la racine, la remplace par le dernier élément et "le range".
SplMaxHeap
et SplMinHeap
:
PHP SplMaxHeap
et SplMinHeap
Simplifier la gestion du tas. Étendre ces classes et remplacer la méthode compare
pour les comparaisons personnalisées.
SplPriorityQueue
:
SplPriorityQueue
agit comme une file d'attente mais utilise un max-heap en interne. Il est utile pour les tâches basées sur la priorité. Remplacez la méthode compare
pour définir l'ordre prioritaire. Exemple:
<?php class PriQueue extends SplPriorityQueue { public function compare($p1, $p2) { // ... (comparator logic) ... } } ?>
Résumé:
Cet article a couvert la structure des données du tas, sa mise en œuvre en PHP (à la fois manuellement et en utilisant des classes SPL), et ses applications, en particulier dans les files d'attente prioritaires. Les futurs articles exploreront les graphiques.
Questions fréquemment posées (FAQ):
La section FAQ fournie est complète et aborde avec précision les questions courantes sur les tas en PHP. Il n'y a pas besoin de modification ou d'addition.
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!