PHP实现hash表
这里使用的是直接取余法 br / h3 span常用HASH函数/span /h3 h3 span style=font-family:arial, 宋体, sans-serif;font-size:14px;直接取余法:f(x):= x mod maxM ; maxM一般是不太接近 2^t 的一个质数。/span /h3 div cl
这里使用的是直接取余法
常用HASH函数
·直接取余法:f(x):= x mod maxM ; maxM一般是不太接近 2^t 的一个质数。
·乘法取整法:f(x):=trunc((x/maxX)*maxlongit) mod maxM,主要用于实数。
·平方取中法:f(x):=(x*x div 1000 ) mod 1000000); 平方后取中间的,每位包含信息比较多。
<?php
/*/PHP实现hash表,步骤
1,创建一个固定大小的数组用于存放数据
2,设计hash函数
3,通过hash函数把关键字映射到数组的某个位置
*/
class HashTable{
private $buckets;
private $size=10;
public function __construct(){
$this->buckets=array();//创建一个数组存放数据
}
private function hashFunc($key){
$strlen=strlen($key);
$hashval=0;
for($i=0;$i<$strlen;$i++){
$hashval+=ord($key{$i});//取得$key字符串第$i个字符的ASCII值,然后累加
}
return $hashval%$this->size;
}
//有了hash函数,就可以实现插入和查找,插入数据时先通过hash函数计算关键字所在hash表的位置
//然后把数据保存在此位置即可
public function insert($key,$value){
$index=$this->hashFunc($key);
$this->buckets[$index]=$value;
}
//查找数据方法与插入数据类似,先通过hash函数计算关键字所在hash表的位置
//然后返回此位置的数据即可
public function find($key){
$index=$this->hashFunc($key);
return $this->buckets[$index];
}
}
//至此,一个简单的hash表编写完成,下面测试
$ht=new HashTable();
$ht->insert('key1','value1');//插入key1=>value1
$ht->insert('key2','value2');//插入key2=>value2
echo $ht->find('key1'),"<br />";//查找key1对应的数据
echo $ht->find('key2');//查找key2对应的数据
?>
- 上一篇:为雅安地震中的同胞们默哀-站长们自愿为网站加
- 下一篇:我在想
精彩图集
精彩文章






