在PHP中查找从索引绑定的地址

时间:2014-02-01 08:27:24

标签: php algorithm

我怀疑在PHP中实现这个算法。我有几个地址范围(或范围)。地址范围的大小会有所不同(如图所示)。现在,我有一个关键因素。我需要找到关键元素所在的地址绑定。

我目前正在使用多个if语句进行比较,添加绑定长度。我相信,有一种更好的方法可以做到这一点。知道如何实施它。

我不是在寻找代码(即使它有帮助:))。关于如何实施它的想法会有所帮助。

enter image description here

1 个答案:

答案 0 :(得分:1)

一种完成这项工作的方法是定义一个包含边界的二维数组:

<?php
$bounds = array();
$bounds[0] = array(1, 1, 1);
$bounds[1] = array(1, 1, 1, 1, 1);
$bounds[2] = array(1, 1, 1);
// ...
?>

另一个包含绑定索引的数组,具体取决于键:

<?php
$indexes = array(0, 0, 0,
     1, 1, 1, 1, 1,
     2, 2, 2,
     3, 3, 3, 3,
     4);
?>

然后,假设$key = 10$bounds[$indexes[$key]]引用$bounds[2] array(1, 1, 1);

您在这里复制数据,但这是O(1)算法。


另一种方式(如果你不操纵 ton 数据,最好的方法),而不重复数据(但O(n)复杂度),是浏览$bounds数组:

<?php
for($key = 10, $i = 0; $key >= 0; $key -= count($bounds[$i]), ++$i);
?>

此处$bounds[$i-1]指的是$bounds[2]