我想知道switch语句在最坏情况下的运行时复杂度是多少(假设您有 n种 情况)。
我一直以为是 O(n) 。不过,我不知道编译器是否做任何聪明的事情。如果答案是特定于实现的,那么我想知道以下几种语言:
这是最坏的O(n)。有时(这取决于语言和编译器),它转换为跳转表查找(对于大小写范围不太大的“不错”的开关)。那就是O(1)
如果编译器想要时髦,我可以考虑将复杂度实现为介于两者之间的任何方式(例如,对案例执行二进制搜索,以获取logn)。但实际上,您将获得线性时间或恒定时间。