相關(guān)關(guān)鍵詞
關(guān)于我們
最新文章
- PHP中opcode緩存簡(jiǎn)單用法分析
- thinkPHP控制器變量在模板中的顯示方法示例
- PHP move_uploaded_file() 函數(shù)(將上傳的文件移動(dòng)到新位置)
- dirname(__FILE__)的含義和應(yīng)用說明
- thinkPHP5框架實(shí)現(xiàn)分頁(yè)查詢功能的方法示例
- PHP中單雙號(hào)與變量
- PHP獲得當(dāng)日零點(diǎn)時(shí)間戳的方法分析
- Laravel ORM對(duì)Model::find方法進(jìn)行緩存示例詳解
- PHP讀寫文件高并發(fā)處理操作實(shí)例詳解
- 【CLI】利用Curl下載文件實(shí)時(shí)進(jìn)度條顯示的實(shí)現(xiàn)
php 實(shí)現(xiàn)Hash表功能實(shí)例詳解
php 實(shí)現(xiàn)Hash表功能
Hash表作為最重要的數(shù)據(jù)結(jié)構(gòu)之一,也叫做散列表。使用PHP實(shí)現(xiàn)Hash表的功能。PHP可以模擬實(shí)現(xiàn)Hash表的增刪改查。通過對(duì)key的映射到數(shù)組中的一個(gè)位置來訪問。映射函數(shù)叫做Hash函數(shù),存放記錄的數(shù)組稱為Hash表。
Hash函數(shù)把任意長(zhǎng)度的和類型的key轉(zhuǎn)換成固定長(zhǎng)度輸出。不同的key可能擁有相同的hash。
Hash表的時(shí)間復(fù)雜度為O(1)
<?php class HashTable{ private $arr = array(); private $size = 10; public function __construct(){ //SplFixedArray創(chuàng)建的數(shù)組比一般的Array()效率更高,因?yàn)楦咏麮的數(shù)組。創(chuàng)建時(shí)需要指定尺寸 $this->arr = new SplFixedArray($this->size); } /** * Description: 簡(jiǎn)單hash算法。輸入key,輸出hash后的整數(shù) * @param $key * @return int */ private function simpleHash($key){ $len = strlen($key); //key中每個(gè)字符所對(duì)應(yīng)的ASCII的值 $asciiTotal = 0; for($i=0; $i<$len; $i++){ $asciiTotal += ord($key[$i]); } return $asciiTotal % $this->size; } /** * Description: 賦值 * @param $key * @param $value * @return bool */ public function set($key, $value){ $hash = $this->simpleHash($key); $this->arr[$hash] = $value; return true; } /** * Description: 取值 * @param $key * @return mixed */ public function get($key){ $hash = $this->simpleHash($key); return $this->arr[$hash]; } public function getList(){ return $this->arr; } public function editSize($size){ $this->size = $size; $this->arr->setSize($size); } } ?>