Maison > développement back-end > tutoriel php > PHP Master | Structures de données pour les développeurs PHP: tas

PHP Master | Structures de données pour les développeurs PHP: tas

Jennifer Aniston
Libérer: 2025-02-23 08:39:10
original
971 Les gens l'ont consulté

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:

  • Les tas sont des structures en forme d'arbres adhérant à la propriété du tas. Les variations incluent les capuchons max (parent ≥ enfants), les mins min (parent ≤ enfants) et les files d'attente prioritaires.
  • généralement mis en œuvre comme des arbres binaires complets, les tas manquent de frère ou de sœur ou de cousine, contrairement aux arbres binaires. Opérations communes: créer, iSempty, insérer, extraire
  • L'implémentation de tas basée sur un tableau est possible. Un tas binaire avec des nœuds n a au plus 2 nœuds 2 n 1. L'insertion inverse le processus d'extraction.
  • PHP propose 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:

PHP Master | Data Structures for PHP Devs: Heaps

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.

PHP Master | Data Structures for PHP Devs: Heaps

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) ...
}
?>
Copier après la connexion

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) ...
    }
}
?>
Copier après la connexion

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!

Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal