我想知道在以下情况下(for循环下的if / else语句)复杂性是O(n)还是O(n ^ 2):
for character in string:
if character==something:
do something
else:
do something else.
谢谢!
答案 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)。