Maison  >  Article  >  développement back-end  >  Structure des données PHP : principe de mise en œuvre de la table de hachage, explorez le secret de la recherche rapide de données

Structure des données PHP : principe de mise en œuvre de la table de hachage, explorez le secret de la recherche rapide de données

PHPz
PHPzoriginal
2024-06-03 18:32:01786parcourir

Une table de hachage est une structure de données efficace qui permet des recherches rapides en mappant les données dans des tableaux de taille fixe (« buckets »), chaque bucket contenant des données avec la même clé. Les tables de hachage en PHP utilisent une fonction de hachage pour convertir des données de n'importe quelle taille en un entier de longueur fixe, qui est utilisé pour calculer les compartiments de données dans la table de hachage.

Structure des données PHP : principe de mise en œuvre de la table de hachage, explorez le secret de la recherche rapide de données

Structure de données PHP : principe de mise en œuvre de la table de hachage, explorez le secret de la recherche rapide de données

Introduction

La table de hachage (table de hachage) est une structure de données efficace pour la recherche rapide de données . Il permet des recherches rapides en mappant les données dans un tableau de taille fixe, un « compartiment ». Chaque bucket contient des données avec la même clé.

Principe d'implémentation

Le principe d'implémentation de la table de hachage en PHP est basé sur la fonction de hachage. Une fonction de hachage convertit les données de n'importe quelle taille en un entier de longueur fixe. Cet entier est utilisé pour calculer le bucket dans lequel les données sont insérées dans la table de hachage.

Implémentation du code : table de hachage personnalisée

Ce qui suit est un exemple de code pour implémenter une table de hachage en PHP :

class HashTable
{
    private $buckets = [];
    private $size = 0;

    public function __construct($size)
    {
        $this->size = $size;
    }

    public function hash(string $key): int
    {
        return crc32($key) % $this->size;
    }

    public function set(string $key, $value): void
    {
        $index = $this->hash($key);
        $this->buckets[$index][$key] = $value;
    }

    public function get(string $key): mixed
    {
        $index = $this->hash($key);
        if (isset($this->buckets[$index][$key])) {
            return $this->buckets[$index][$key];
        } else {
            return null;
        }
    }
}

Cas pratique : regrouper les employés par âge

Supposons que nous ayons un tableau contenant l'âge des employés et nous voulons des salariés du Groupe par âge. Nous pouvons utiliser une table de hachage pour trouver rapidement des employés du même âge.

$ages = [25, 30, 28, 35, 32, 25, 30];
$hashTable = new HashTable(count($ages));

foreach ($ages as $age) {
    $hashTable->set($age, []);
}

foreach ($ages as $age) {
    $hashTable->get($age)[] = $age;
}

var_dump($hashTable->buckets);

Résultat de sortie :

array(
    25 => array(25, 25),
    30 => array(30, 30),
    28 => array(28),
    35 => array(35),
    32 => array(32)
)

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