算法复杂度:for循环下if/else

Algorithm complexity: if/else under for loop

我想知道在类似下面的情况下(for 循环下的 if/else 语句)复杂度是 O(n) 还是 O(n^2):

for character in string:
    if character==something:
        do something
    else:
        do something else.

谢谢!

这取决于你在 else 语句中做什么,但我相信它是 O(n),因为最坏的情况是你遍历字符串 n 次。

会是

O(n) 如果 'do something' 和 'do something else' 是 O(1)

O(n^2) 如果 'do something' 和 'do something else' 是 O(n)

基本上,for 循环的复杂度将取决于 it 组件的复杂度和编号。循环数。

简而言之,O(n) 基本上意味着算法将花费与 n 中的元素一样多的时间来执行。 O(1) 意味着无论输入中有多少元素,算法总是需要一个常数时间。 O(n^2) 表示该算法需要 项目的平方数 时间(即输入越大,速度越慢)。

在你的例子中,你对输入中的每一项都做了一次同样的事情。 if..else 只是您对每个项目执行一次的普通语句。它既不增加也不减少 runtime/complexity。你的算法是 O(n).