Использует ли in_array () алгоритм двоичного поиска? - PullRequest
7 голосов
/ 13 мая 2010

У меня большой массив строк, который я хочу использовать для поиска.

Я использую in_array(), но я подозреваю, выполняет простой цикл - кто-нибудь знает, использует ли алгоритм in_array() алгоритм поиска?

Ответы [ 3 ]

10 голосов
/ 13 мая 2010

in_array() - это O(n). Также см. Список Big-O для функций PHP

5 голосов
/ 13 мая 2010

Поскольку для сортировки массива не требуется, я не вижу, как он мог бы выполнять бинарный поиск.

4 голосов
/ 13 мая 2010

in_array() использует линейный (O (n)) поиск, а не бинарный (O (log n)) поиск.

Если вы хотите O (log n) или лучше, я бы посоветовал вам либо поместить значения, которые вы хотите искать, в качестве ключей в массиве, либо создать структуру индекса, которая фактически делает то же самое.

...