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;)不被认为是一种好习惯?是否需要对缓存问题做很多事情?
答案 0 :(得分:1)
您的双循环时间复杂度为O(n)
,因为迭代总数为n
。
修改for
循环的循环变量被认为是不好的做法。我会改用while
循环。
请注意,内部循环有一个错误 - 它需要检查它是否不会继续超过缓冲区的末尾。