在关联数组中查找数字的第一个外观

时间:2017-10-23 06:16:58

标签: php arrays algorithm

让我们说以下是真的:

  • 我有一个包含未知数量元素的关联数组。
  • 键是整数,从1开始,每个都比最后一个多。
  • 有一个元素的键 N ,其值为1
  • 密钥小于 N 的每个元素的值为0
  • 密钥大于 N 的每个元素的值为1

这是数组:

enter image description here

问题是: 找到第一个' 1'的最快/最聪明的方法是什么?在数组?

2 个答案:

答案 0 :(得分:0)

如果你真的不知道数组的长度(非常奇怪的情况),那么你所能做的就是几何增长你的搜索,跳过4,跳过8,跳过16等,直到找到1,然后用(几何)二分搜索减去。

答案 1 :(得分:0)

array_search是您最好的选择

// Make up some data...
$data = [];
for ($i = 1; $i <= 20; ++$i) {
    $data[$i] = rand(0,5);
}


var_dump($data);

// Find the first one...
echo 'The first 1 is at position: ' . array_search(1, $data);

http://php.net/manual/en/function.array-search.php