ホームページ  >  記事  >  バックエンド開発  >  PHP データ構造: 高速クエリをマイニングするための強力なツール、ハッシュ テーブルの秘密

PHP データ構造: 高速クエリをマイニングするための強力なツール、ハッシュ テーブルの秘密

WBOY
WBOYオリジナル
2024-06-02 14:56:57440ブラウズ

ハッシュ テーブルは、ハッシュ関数を通じてキーを配列内のインデックスにマップする効率的なデータ構造であり、高速なデータの保存と取得を可能にします。実際の戦闘では、単語の出現回数を効率的にカウントするために使用できます。 ① ハッシュ テーブルを使用して各単語をカウンターにマッピングします。 ② 単語が出現したときに、キーがハッシュ テーブルに存在するかどうかを確認します。ない場合は追加してカウントを 1 に設定します。④ がある場合はカウントに 1 を追加します。

PHP データ構造: 高速クエリをマイニングするための強力なツール、ハッシュ テーブルの秘密

PHP データ構造: ハッシュ テーブルの秘密

ハッシュ テーブルの概要

ハッシュ テーブルは、データの保存と迅速な取得に使用される効率的なデータ構造です。キーを値にマッピングし、ハッシュ関数を使用してキーを配列で使用できるインデックスに変換します。

ハッシュ関数

ハッシュ関数は、キーをインデックスに変換する魔法の公式です。理想的なハッシュ関数は次のとおりです:

  • 均一: 異なるキーに対して異なるインデックスを生成します
  • 高速: 一定時間で計算します
  • 衝突なし: 複数のキーに対して同じインデックスの生成を回避します

実践例: Word Counter

テキスト ファイルがあり、各単語が出現する回数をカウントする必要があるとします。素朴な解決策は、配列を使用して単語とそのカウントを保存することですが、単語の数が増えると、カウントの検索と更新の効率が低下します。

ハッシュ テーブルを使用すると、各単語をカウンターにマッピングし、その単語をキーとして直接使用できます。単語に遭遇したら、そのキーがハッシュ テーブルに存在するかどうかをすぐに確認でき、存在しない場合はキーを追加してそのカウントを 1 に設定します。そうであれば、カウントに 1 を加えます。

class WordCounter {
    private $words = [];

    public function countWords($text) {
        $words = explode(' ', $text);
        foreach ($words as $word) {
            if (isset($this->words[$word])) {
                $this->words[$word]++;
            } else {
                $this->words[$word] = 1;
            }
        }
    }

    public function getWordCount($word) {
        return $this->words[$word] ?? 0;
    }
}

この例では、$words数组充当哈希表,键是单词,值是计数。函数countWords()高效地计算每个单词的计数,而函数getWordCount() を使用して特定の単語の数をすばやく取得できます。

以上がPHP データ構造: 高速クエリをマイニングするための強力なツール、ハッシュ テーブルの秘密の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。