<?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 字元型別的 在查詢中陣列的特點是定址容易,插入和刪除困難,鍊錶則相反 雜湊表將二者的特點綜合。雜湊表建表 通過某種關係轉換,使關鍵字適度的分散到制定大小的順序結構中,...