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

时间:2015-07-01 14:51:07

标签: if-statement for-loop complexity-theory

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

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

谢谢!

3 个答案:

答案 0 :(得分:3)

将是

O(n)if '做点什么'和'做别的事情'是O(1)

O(n ^ 2)if '做点什么'和'做别的事情'是O(n)

基本上,for循环的复杂性将取决于它组件的复杂性和否。循环。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

简单地说,O(n)基本上意味着算法将花费与n中的元素一样多的时间来执行。 O(1)表示算法始终采用恒定时间,无论输入中有多少元素。 O(n ^ 2)表示算法采用项目平方时间(即输入越大,速度越慢)。

在你的情况下,你对输入中的每个项目都做了同样的事情。 if..else只是您对每个项目执行一次的正常声明。它既不增加也不减少运行时间/复杂性。你的算法是O(n)。