国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Rumah php教程 PHP源碼 PHP 實現(xiàn)HASH表

PHP 實現(xiàn)HASH表

Nov 09, 2016 pm 02:43 PM

Hash 表又稱散列表,通過關鍵字Key 映射到數(shù)組中一個位置來訪問記錄

Hash 函數(shù)的作用是把任意長度的輸入,通過HASH算法變換成固定長度的輸出,該輸出就是HASH值

HASH表的時間復雜度為O(1)

下文使用直接取余法實現(xiàn)

創(chuàng)建一個hashtable

class HashTable{
     
    private $buckets;          //用于存儲數(shù)據(jù)的數(shù)組
    private $size = 12;          //記錄buckets 數(shù)組的大小
    public function __construct(){
         
        $this->buckets = new SplFixedArray($this->size);
        //SplFixedArray效率更高,也可以用一般的數(shù)組來代替
    }
     
    private function hashfunc($key){
        $strlen = strlen($key);  //返回字符串的長度
        $hashval = 0;     
        for($i = 0; $i<$strlen ; $i++){
            $hashval +=ord($key[$i]); //返回ASCII的值
        }
        return $hashval%$this->size;    //    返回取余數(shù)后的值
    }
    public function insert($key,$value){
     
    $index = $this->hashfunc($key);
    if(isset($this->buckets[$index])){
        $newNode = new HashNode($key,$value,$this->buckets[$index]);
            }else{
    $newNode = new HashNode($key,$value,null);
            }
    $this->buckets[$index] = $newNode;
        }
     
    public function find($key){
         
            $index = $this->hashfunc($key);
             
            $current = $this->buckets[$index];
            echo "</br>";
            var_dump($current);
            while(isset($current)){    //遍歷當前鏈表
                if($current->key==$key){    //比較當前結點關鍵字
                    return $current->value;
                }
                $current = $current->nextNode;
                //return $current->value;
            }
            return NULL;
        }
     
}

上述可能會有沖突問題,比如HASH表指向的

插入兩個元素,第二個元素的HASH值與第一個值得HASH值相同

則第二個元素將覆蓋第一個元素的值

這時我們用拉鏈法解決沖突:具有相同HASH值得字節(jié)點鏈接在同一個鏈表中。查找這個元素的時候就必須遍歷這條鏈表。

創(chuàng)建 HASHNODE

class HashNode{
            public $key;       //關鍵字
            public $value;     //數(shù)據(jù)
            public $nextNode;  //HASHNODE來存儲信息
            public function __construct($key,$value,$nextNode = NULL){
                        $this->key = $key;
                        $this->value = $value;
                        $this->nextNode = $nextNode;
                         
            }
         
}

實現(xiàn)

    $ht = new HashTable();
     $ht->insert(&#39;key1&#39;,&#39;value1&#39;);
     //$ht->insert(&#39;key12&#39;,&#39;value12&#39;);
        echo $ht->find(&#39;key1&#39;);


Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial PHP
1502
276