Quelle est la durée de la complexité d'une instruction switch?

J'aimerais savoir quelle est la pire cas d'exécution de la complexité d'une instruction switch est, en supposant que vous avez n cas.

J'ai toujours supposé que c'était O(n). Je ne sais pas si les compilateurs de faire quelque chose d'intelligent, si. Si la réponse est spécifique à l'implémentation, j'aimerais savoir pour les langues suivantes:

  • Java
  • C/C++
  • C#
  • PHP
  • Javascript
  • La réponse n'est pas seulement spécifique à une langue, pas même compilateur spécifique. Cela dépend de la code. Certaines instructions de commutation sont transformés en sauter tables par certains compilateurs.
  • À l'autre extrême, les valeurs peuvent causer d'autres fonctions à appeler. En Ruby, par exemple, les valeurs sont vérifiées à l'aide de la === de l'opérateur, qui peut faire n'importe quoi. Une utilisation commune de ce qui est d'expressions régulières, qui (dans certains cas) peut être très coûteux-et donc le coût de l'interrupteur est dominé par les valeurs elles-mêmes, et non pas par la façon dont il y en a beaucoup.
  • Est-il une situation où il pourrait être plus grande que O(n) (n cas dans la mode)?
  • Gosh, je ne l'espère pas.
  • peut-être comme une sorte de mal anti-optimisation de l'option de compilateur... ce serait un vilain poisson d'avril blague 😉
InformationsquelleAutor Fragsworth | 2010-12-14