如果我对嵌套循环使用相同的变量,则时间复杂度是n或n的平方

时间:2015-01-15 11:14:45

标签: c loops time nested complexity-theory

for(i=0;i<n;i++)
{
   for(;arr[i]!=' ';i++)
       {
       //required code
       }
//required code
}

假设我想要做一些操作,比如翻译一个句子的每个单词(但不是整个句子。)例如: 输入:&#34;这是一个球&#34; 输出:&#34; sihT si a llab&#34; &#39 ;. 然后肯定在循环内部,我会寻找一个空间&#39;字符。我想问下面的事情: (1)方式,我使用了两个循环,为什么人们说我通过使它成为O(n ^ 2)而不必要地使程序更复杂。 我知道我可以使用&#39; if&#39;在外部&#39;为&#39;循环代替内在&#39;。但是,如果我选择这种方式,那怎么可能是O(n ^ 2),因为我认为我在同一个变量上增加了循环&#39;我认为它是O(n)。 (2)为什么&#34;我写的&#34; (内部循环代替&#39;如果&#39;)不被认为是一种好习惯?是否需要对缓存问题做很多事情?

1 个答案:

答案 0 :(得分:1)

您的双循环时间复杂度为O(n),因为迭代总数为n

修改for循环的循环变量被认为是不好的做法。我会改用while循环。

请注意,内部循环有一个错误 - 它需要检查它是否不会继续超过缓冲区的末尾。