2012-02-25 105 views
-3

这段代码的运行时复杂度是多少?代码的工作原理应该是可行的,我只是对运行时复杂性有点困惑。这段代码的运行时复杂性是什么?

int Something(int x[]){ 
int i=0; 
for(i=0;i<x.length;i++){ 
    //some code over here 
    i=-1; 
} 

请注意,由于循环中有continue和break语句,因此这不是无限循环。然而,由于在循环结束时条件i = -1,它循环了好几次。

O(n)复杂度意味着没有嵌套循环,并且此代码没有嵌套循环。但我并不认为这会是O(n)。它也不会是O(n^2)或类似的东西,因为没有任何嵌套循环。

+3

你问的是关于记忆还是时间? 'O(n)复杂度意味着没有嵌套循环,并且这个代码没有嵌套循环 - - 并不那么简单。 '它也不会是O(n^2)或类似的东西,因为没有任何嵌套循环 - 不是那么简单。 '循环中有一个continue和break语句 - 如果我们甚至看不到所有的代码,我们应该如何帮助? – 2012-02-25 11:49:22

+2

不可能说没有看到休息/继续条件。请发布你的其他代码。 – 2012-02-25 11:49:48

+0

'i = -1;'执行的最大次数是多少?什么时候执行w.r.t. '我'的最后一个值? – 2012-02-25 11:50:15

回答

2

在它的当前形式这个 O(无穷大)。它可能永远不会停止。

如果循环中有break语句,则必须提供完整的代码。没有这一点,分析是不可能的。

+2

阅读问题的其余部分。它停止。 – 2012-02-25 11:48:53

+0

@尼克·巴恩斯:我在创建该评论的时候更新了我的答案。 – 2012-02-25 11:50:46

+0

+1'O(无穷远)'是正确的,无论它是否停止:) – 2012-02-25 12:00:51