哈希查找算法(php)
2017-01-24 00:33
671 查看
/** * 定义数据元素类型 */ class dataType { public $value; public $hi; } /** *定义哈希表 */ class HashTable { public $data; public $length; public $num; } //创建哈希表 function createHashTable(&$H, $m, $p, $hash, $n) { $k=1; $H->num = $n; // 初始哈希表的元素个数 $H->length = $m; // 初始哈希表的长度 for ($i = 0; $i < $m; $i ++) { $dataType = new dataType(); $dataType->value = - 1; $dataType->hi = 0; $H->data[$i] = $dataType; } for ($i = 0; $i < $n; $i ++) { $sum = 0; $addr = $hash[$i] % $p; $di = $addr; if ($H->data[$addr]->value == -1) { $H->data[$addr]->value = $hash[$i]; $H->data[$addr]->hi = 1; } else { do { $di = ($di + $k) % $m; $sum +=1; } while ($H->data[$di] ->value != -1); $H->data[$di]->value = $hash[$i]; $H->data[$di]->hi = $sum + 1; } } } //查找哈希表 function searchHash($H,$v) { $m=$H->length; $d=$d1=$v%$m; while($H->data[$d]->value!=-1) { if($H->data[$d]->value==$v){ return $d; }else{ $d=($d+1)%$m; } if($d==$d1) { return -1; } } return -1; } $hash = [78,90,66, 70,155,82,123,231]; $H = new HashTable(); $n = 8; $m = 11; $p = 11; createHashTable($H, $m, $p, $hash, $n); $point=searchHash($H,123);
相关文章推荐
- Laravel session存储后 意外丢失
- php面向对象视频笔记之第五章(错误和异常处理)
- RtlAdjustPrivilege进程提权,权限ID对照表
- PHP客户端访问WebService接口
- Compiler Error Message: CS0016: Could not write to output file 'c:\Windows\Microsoft.NET\Framework64
- ftp服务器配置问题
- php+mysql_log
- thinkPHP5 使用laypage分页插件实现列表分页功能
- vsftpd的安装与配置
- PHP RSA密文过长加密解密 越过1024的解决代码
- yii2中restful url访问配置, 登陆接口access-token验证类
- 一个php简单的框架实现,仅实现了简单路由层
- AES加解密JS和php互相处理字符
- phpstudy本地搭建域名访问
- php xdebug的安装
- PHP常用的实例
- OLTP与OLAP理解
- 23. Yii 组件事件
- PHP输出XML格式
- 超详细搭建PhpStorm+PhpStudy开发环境