【问题标题】:Does in_array() use a binary search algorithm?in_array() 是否使用二进制搜索算法?
【发布时间】:2011-02-19 01:06:09
【问题描述】:

我有一个较大的字符串数组,我想用作查找。

我正在使用in_array(),但我怀疑它做了一个简单的循环 - 有谁知道in_array() 算法是否使用 bsearch 算法?

【问题讨论】:

标签: php binary-search bsearch


【解决方案1】:

in_array()O(n)。 另见List of Big-O for PHP functions

【讨论】:

    【解决方案2】:

    由于它不需要对数组进行排序,所以我看不出它如何进行二进制搜索。

    【讨论】:

    • 我知道不是这样,但公平地说,OP 可能认为 PHP 在底层维护了排序顺序。
    【解决方案3】:

    in_array() 使用线性 (O(n)) 搜索而不是二进制 (O(log n)) 搜索。

    如果你想要 O(log n) 或更好,我建议你要么将要搜索的值作为键放在数组中,要么创建一个索引结构来有效地做同样的事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-25
      • 2021-11-18
      • 2012-05-09
      • 1970-01-01
      • 2013-04-13
      • 2012-03-19
      • 2014-09-19
      相关资源
      最近更新 更多