一尘不染

switch语句的运行时复杂度是多少?

algorithm

我想知道switch语句在最坏情况下的运行时复杂度是多少(假设您有 n种 情况)。

我一直以为是 O(n) 。不过,我不知道编译器是否做任何聪明的事情。如果答案是特定于实现的,那么我想知道以下几种语言:

  • Java
  • C / C ++
  • C#
  • PHP
  • Javaboot

阅读 1831

收藏
2020-07-28

共1个答案

一尘不染

这是最坏的O(n)。有时(这取决于语言和编译器),它转换为跳转表查找(对于大小写范围不太大的“不错”的开关)。那就是O(1)

如果编译器想要时髦,我可以考虑将复杂度实现为介于两者之间的任何方式(例如,对案例执行二进制搜索,以获取logn)。但实际上,您将获得线性时间或恒定时间。

2020-07-28