PHP實現 拉鍊式雜湊表

2021-07-02 07:35:33 字數 1125 閱讀 4172

<?php

/** * 使用php語言實現資料的 拉鍊式雜湊 儲存

* @author beggar [email protected]

* @date 2015-05-08

*/class hashtable

/*** 取每個字元的asc碼之和並對其取餘,實現簡單的雜湊函式

* @param type $key

* @return boolean

*/private function hashkey($key)

$hash = 0;

$len = strlen($key);

for($i=0; $i<$len; $i++)

return $hash%$this->size;

}/**

* 向雜湊表中插入指定資料

* @param type $key

* @param type $val

* @return boolean

*/public function insert($key, $val='')

$index = $this->hashkey($key);

if($this->bucket[$index]->key == $key || $this->count >= $this->size)

if(isset($this->bucket[$index]))else

$this->bucket[$index] = $hashnode;

$this->count++;

}/**

* 查詢資料

* @param type $key

* @return boolean

*/public function find($key)

$index = $this->hashkey($key);

$phead = $this->bucket[$index];

while($phead->key != $key)

return $phead->value;

}}/**

* 使用類充當雜湊表的每個節點,相當於c語言下的結構體實現的節點

*/class hashnode

}

拉鍊雜湊表

抄的 oi wiki。hash table?首先要有雜湊函式,將乙個特定的複雜結構變成乙個整數,當然,雜湊函式不應有隨機性。然後對於雜湊表的值域進行拉鍊,避免雜湊衝突。如果雜湊表的值域大小為 m 表內插入了 n 個元素,那麼單次查詢的期望複雜度是 o frac nm 看上去不太靠譜啊 比如這題 us...

雜湊表(拉鍊法)

開雜湊法又叫鏈位址法 開鏈法 開雜湊法 首先對關鍵碼集合用雜湊函式計算雜湊位址,具有相同位址的關鍵碼歸於同一子集合,每乙個子集合稱為乙個桶,各個 桶中的元素通過乙個單鏈表鏈結起來,各鍊錶的頭結點儲存在雜湊表中。設元素的關鍵碼為37,25,14,36,49,68,57,11,雜湊表為ht 12 表的大...

雜湊表查詢 拉鍊法

雜湊查詢 雜湊查詢 雜湊的第一步是使用雜湊函式將鍵對映成索引 1 除留取餘法 最常用的 特點是容易造成堆積,產生衝突 2 特徵值 3 字元型別的 在查詢中陣列的特點是定址容易,插入和刪除困難,鍊錶則相反 雜湊表將二者的特點綜合。雜湊表建表 通過某種關係轉換,使關鍵字適度的分散到制定大小的順序結構中,...