У меня есть большой массив строк, который я хочу использовать для поиска.
Я использую in_array()
, но подозреваю, что он выполняет простой цикл - кто-нибудь знает, использует ли алгоритм in_array()
алгоритм bsearch?
У меня есть большой массив строк, который я хочу использовать для поиска.
Я использую in_array()
, но подозреваю, что он выполняет простой цикл - кто-нибудь знает, использует ли алгоритм in_array()
алгоритм bsearch?
in_array()
- это O(n)
. Также см. Список Big-O для функций PHP
Поскольку для этого не требуется сортировка массива, я не понимаю, как он может выполнять двоичный поиск.
in_array()
использует линейный (O (n)) поиск, а не двоичный (O (log n)) поиск.
Если вы хотите O (log n) или лучше, я бы предложил вам либо поместить значения, которые вы хотите искать, в качестве ключей в массиве, либо создать структуру индекса, которая эффективно делает то же самое.