【发布时间】:2014-06-08 19:08:46
【问题描述】:
2我开发了一种算法,我正试图以最详细的方式记录它的时间复杂度,但我遇到了一个问题。
算法是这样的:
for i=0:n {
task 1;
task 2;
for j=0:i {
task 3;
}
task 4;
}
所以我通过说任务 1 的复杂性为 O(t1), ... 来记录我的复杂性 但是当我试图解释任务 3 时,我被卡住了,因为它基本上会执行 i 次,我打算说算法的复杂度是任务 1 + 任务 2 + i * 任务 3 + 任务的复杂度的 n 倍4. 由于我将依赖于 n,我真的不知道什么是呈现事物的最佳方式。
我知道如果不存在任务 1、2 和 4,那么复杂性将是 O(n^2)。但我不知道如何与我之前的解释保持一致。
我希望这是有道理的,谢谢你的帮助。
【问题讨论】:
-
任务 3 将被执行 1+2+3+.. +n = n*(n+1)/2 次。所以任务 3 的时间复杂度只有 O(n^2)。
标签: algorithm loops complexity-theory