Maison >développement back-end >tutoriel php >Quelles sont les complexités temporelles des fonctions de tableau intégrées PHP courantes ?

Quelles sont les complexités temporelles des fonctions de tableau intégrées PHP courantes ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-09 12:30:15446parcourir

What are the Time Complexities of Common PHP Built-in Array Functions?

Comprendre la complexité temporelle des fonctions intégrées PHP

Diverses fonctions intégrées PHP présentent différentes complexités temporelles lors de la gestion des structures de données. Cet article fournit une liste complète des temps Big-O théoriques et pratiques pour ces fonctions, permettant aux développeurs d'optimiser les performances de leur code.

Points intéressants

  • isset/array_key_exists : Nettement plus rapide que in_array et array_search pour les opérations de recherche.
  • (Union) : Légèrement plus rapide que array_merge, offrant une syntaxe plus concise pour combiner arrays.
  • shuffle : possède la même complexité Big-O que array_rand, ce qui rend les deux fonctions adaptées à la randomisation des données.
  • array_pop/array_push : Plus rapide que array_shift/array_unshift en raison de la pénalité encourue lors réindexation.

Lookups

  • array_key_exists : Effectivement O(1), car la recherche de hachage est proche de l'instantané, malgré son O( théorique) n) complexité.
  • isset( $array[$index] ) : similaire à array_key_exists, démontrant une complexité temporelle quasi constante.
  • in_array : O(n), car il effectue une recherche linéaire dans le tableau.
  • array_search : O(n), utilisant la même fonction principale que in_array mais renvoyant le value.

Fonctions de file d'attente

  • array_push : O (∑ var_i, pour tout i), où var_i représente des valeurs supplémentaires passées en arguments.
  • array_pop : O(1).
  • array_shift : O(n), en raison de la réindexation requise.
  • array_unshift : O(n ∑ var_i, pour tout i), là encore résultant de la réindexation nécessaire.

Array Intersection, Union, Soustraction

  • array_intersect_key : Si l'intersection est de 100 %, O(Max(param_i_size) * ∑param_i_count, pour tout i); si l'intersection est de 0%, O(∑param_i_size, pour tout i).
  • array_intersect : Si l'intersection est de 100%, O(n^2 * ∑param_i_count, pour tout i); si l'intersection est de 0 %, O(n^2).
  • array_intersect_assoc : similaire à array_intersect_key, présentant les mêmes complexités temporelles Big-O.
  • array_diff  : O(π param_i_size, pour tout i), représentant le produit du paramètre tailles.
  • array_diff_key: O(∑ param_i_size, for i != 1), car il exclut l'itération sur le premier tableau.
  • array_merge: O(∑ array_i, i != 1), ne nécessitant pas d'itération sur le premier array.
  • (Union) : O(n), où n est la taille du deuxième tableau, entraînant une surcharge inférieure à celle de array_merge.
  • array_replace : O(∑ array_i, pour tout i).

Aléatoire

  • shuffle : O(n).
  • array_rand : O (n), impliquant une recherche linéaire.

Évident Big-O

  • array_fill : O(n).
  • array_fill_keys : O(n).
  • gamme : O(n).
  • array_splice : O(longueur de décalage).
  • array_slice : O(longueur de décalage) ou O(n) si longueur = NULL.
  • array_keys : O(n).
  • array_values : O(n).
  • array_reverse : O(n).
  • array_pad : O(pad_size).
  • array_flip : O(n).
  • array_sum : O(n).
  • array_product : O(n).
  • array_reduce : O(n).
  • array_filter : O(n).
  • array_map : O(n).
  • array_chunk : O(n).
  • array_combine : O(n).

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn