php 实现hashtable,php实现hashTable

Hash表作为最重要的数据结构之一,也叫做散列表。使用PHP实现Hash表的功能。PHP可以模拟实现Hash表的增删改查。通过对key的映射到数组中的一个位置来访问。映射函数叫做Hash函数,存放记录的数组称为Hash表。

Hash函数把任意长度的和类型的key转换成固定长度输出。不同的key可能拥有相同的hash。

Hash表的时间复杂度为O(1)

class HashTable{

private $arr = array();

private $size=10;

public function __construct(){

$this->arr = new SplFixedArray($this->size);

}

public function SimpleHash($key){

$len = strlen($key);

$ascTotal=0;

for($i=0;$i

$ascTotal+=ord($key[$i]);

}

return $ascTotal%$this->size;

}

//添加

public function set($key,$value){

$hash = $this->SimpleHash($key);

$this->arr[$hash]=$value;

return true;

}

//获取

public function get($key){

$hash = $this->SimpleHash($key);

return $this->arr[$hash];

}

//获取列表

public function getList(){

print_r($this->arr);

}

//修改hash大小

public function editSize($size){

$this->size = $size;

$this->arr->setSize($size);

}

}

$objtable = new HashTable();

$objtable->set("test",40);

$objtable->set(‘a‘,10);

$objtable->editSize(40);

原文:https://www.cnblogs.com/zh718594493/p/12093830.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值