2010-05-13 3 views
7

J'ai un large éventail de chaînes que je veux utiliser comme recherche.Est-ce que in_array() utilise un algorithme de recherche binaire?

J'utilise in_array(), mais je soupçonne sa faire une simple boucle à travers - ce que quelqu'un sait si le in_array() algo utilise un algo bsearch?

+0

Vous ne savez pas si in_array le fait. Je suis tombé sur ceci, j'ai pensé que vous pourriez le trouver utile. http://au.php.net/manual/fr/function.array-search.php#93352 –

Répondre

3

in_array() utilise une recherche linéaire (O (n)) plutôt qu'une recherche binaire (O (log n)). Si vous voulez O (log n) ou mieux, je vous suggère soit de mettre les valeurs que vous voulez rechercher comme les clés dans un tableau ou vous créez une structure d'index qui fait effectivement la même chose.

5

Puisqu'il ne nécessite pas le tri du tableau, je ne vois pas comment il pourrait faire une recherche binaire.

+0

Je sais que non, mais pour être juste, l'OP peut avoir pensé que PHP maintenait un ordre de tri sous- la hotte. –