Hash 表又稱散列表,透過關(guān)鍵字Key 映射到數(shù)組中一個位置來存取記錄
Hash 函數(shù)的作用是把任意長度的輸入,透過HASH演算法轉(zhuǎn)換成固定長度的輸出,該輸出就是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){ //比較當前結(jié)點關(guān)鍵字 return $current->value; } $current = $current->nextNode; //return $current->value; } return NULL; } }
上述可能會有衝突問題,例如HASH表指向的
插入兩個元素,第二個上述可能會有衝突問題,例如HASH表指向的
插入兩個元素,第二個上述可能會有衝突問題,例如HASH表指向的
插入兩個元素,第二個上述個元素的HASH值與第一個值得HASH值相同
則第二個元素將覆蓋第一個元素的值
這時我們用拉鍊法解決衝突:具有相同HASH值得字節(jié)點鏈接在同一個鍊錶中。要找出這個元素的時候就必須遍歷這條鍊錶。
建立 HASHNODE
class HashNode{ public $key; //關(guān)鍵字 public $value; //數(shù)據(jù) public $nextNode; //HASHNODE來存儲信息 public function __construct($key,$value,$nextNode = NULL){ $this->key = $key; $this->value = $value; $this->nextNode = $nextNode; } }實作??
$ht = new HashTable(); $ht->insert('key1','value1'); //$ht->insert('key12','value12'); echo $ht->find('key1');??????
本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔相應的法律責任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool
免費脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動的應用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章
Grass Wonder Build Guide |烏瑪媽媽漂亮的德比
4 週前
By Jack chen
<??>:在森林裡99夜 - 所有徽章以及如何解鎖
4 週前
By DDD
烏瑪?shù)姆劢z漂亮的德比橫幅日程(2025年7月)
1 個月前
By Jack chen
Rimworld Odyssey溫度指南和Gravtech
3 週前
By Jack chen
Windows安全是空白或不顯示選項
1 個月前
By 下次還敢

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)