我们只是说是否有像
这样的if语句if(arraylist.indexOf(n) < 14 && arraylist.indexof(m) < 20) {
doSomething();
}
if语句是O(n)
还是O(n^2)
? indexOf(n)的时间复杂度为O(n)
。我试着在谷歌搜索答案,但似乎无法找到它。
答案 0 :(得分:0)
你在这里没有语言标签,但我认为它支持短路(大多数都是)。
复杂性为arraylist.indexOf
的次数2.因此,如果您正确且复杂度为O(n)
,则if
的复杂性(假设没有电路)是O(2n)
(因为你通常会通过删除常量来简化复杂性,O(n)
)。
答案 1 :(得分:0)
担心使用O(N)函数隐藏的性能影响并不是不合理的。但是,在这种情况下,没有额外的惩罚。当indexOf
的两边都调用&&
时,会出现最坏情况。在这种情况下,时间复杂度不会改变,因为O(N)最多应用两次。
我在使用连接函数时遇到了隐藏的复杂性问题,其中连接需要在附加附加数据之前遍历原始值(例如,C&#39; s strcat
)。不知道遍历的调用者可能会编写一个循环来执行每次迭代的连接,而不知道这会触发时间复杂度增加的数量级。