分块查找算法 (php)
来源:互联网 发布:ubuntu启动程序命令 编辑:程序博客网 时间:2024/06/12 05:23
class Node{ public $data; // 数据域 public $key; // 关键之查找}class IndexNode{ public $key; // 记录当前快中最大的key数 public $link; // 当地块的起始地址}function InitIndex(SplFixedArray $seqList){ $n = $seqList->count(); $s = ceil(sqrt($n)); $b = $s; $indexList = new SplFixedArray($b); for ($i = 0; $i < $s; $i ++) { $max = null; for ($j = 0; $j < $s; $j ++) { if ($i * $s + $j < $n && $max < $seqList[$i * $s + $j]->key) { $max = $seqList[$i * $s + $j]->key; } } $idx = new IndexNode(); $idx->key = $max; $idx->link = $i * $s; $indexList[$i] = $idx; } return $indexList;}function searchIndex(SplFixedArray $seqList, SplFixedArray $indexList, $val){ $n = $seqList->count(); $m = ceil(sqrt($n)); for ($i = 0; $i < $m; $i ++) { if ($seqList[$indexList[$i]->key]->data < $val) continue; $j = $indexList[$i]->link; $end = $j + $m; while ($j <= $end && $seqList[$j]->data != $val) { $j ++; } if ($j > $end) { continue; } else { return $j; } } return -1;}$arr=[14,27,32,50,10,76,32,55,44,33,9,96,30,57,49];$seqList = new SplFixedArray(count($arr));for($i=0;$i<count($arr);$i++){ $node=new Node(); $node->key=$i; $node->data=$arr[$i]; $seqList[$i]=$node;}$indexList = InitIndex($seqList);$index=searchIndex($seqList, $indexList, 55);print_r($index);
0 0
- 分块查找算法 (php)
- 查找算法-分块算法
- 分块查找算法
- 分块查找算法
- 验证分块查找算法
- 验证分块查找算法
- 验证分块查找算法
- 验证分块查找算法
- 【验证分块查找算法】
- [转载]查找算法----分块查找
- 基本查找算法 PHP 实现 保存 顺序查找,二分查找 分块查找
- 折半查找算法 和 分块查找算法
- 实现分块查找的算法
- (2)分块查找算法
- 实现分块查找的算法
- 查找算法之分块查找法
- 数据结构-查找-分块查找(1)算法简介
- 查找算法:顺序查找、二分查找、分块查找
- 利用阿里巴巴的矢量图片库工具网站制作自己的图标字体
- Nginx源码阅读(ngx_list_t)
- CoordinatorLayout 协调者布局的简单使用1
- Git仓库应用
- 数据挖掘整理(一)
- 分块查找算法 (php)
- RxJava学习经验谈——map与flatmap
- 【mysql】如何搭建集群主从复制
- 13 共享内存3
- Java:日期时间字符串和毫秒相互转换
- Nginx源码阅读(ngx_array_t)
- [Boolan] C++第二周(创建一个带指针成员变量的类)[注意事项]
- 直立平衡车的姿态测量卡尔曼滤波算法原理与应用(附代码及调试截图)
- Android简易实战教程--第五十二话《满屏拖动的控件2》