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

time complexity is order of n or square of n if i use same variables for nested loops

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

假设我想做一些操作,比如“反转句子中的每个单词(但不是整个句子)。示例: 输入:"This is a ball" 输出:"sihT si a llab" '. 然后肯定在循环内,我会寻找一个 'Space' 字符。我想问以下问题: (1) 顺便说一下,我已经用了两个循环,为什么有人说我把程序做成O(n^2)是在不必要地让程序变得更复杂。 我知道我可以在外部 'for' 循环中使用 'if' 来代替内部 'for'。但是,如果我选择这种方式,这怎么可能是 O(n^2),因为我认为我正在增加相同变量 'i' 上的循环,我认为它是 O(n)。 (2)为什么 "what I have written" (内部 for 循环代替 'if')不是一个好的做法?它与缓存问题有很大关系吗?

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

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

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