piy*_*hya 2 javascript for-loop time-complexity
嗨,我只是在想如果我像下面给定的那样编写循环,那么它的时间复杂度是多少。它会是o(n ^ 2)或只是o(n)
for(var i=0,j=0;i<arr1.length || j<arr2.length;i++,j++)
{
//some code here
}
Run Code Online (Sandbox Code Playgroud)
时间复杂度为O(max(m,n)),其中m和n分别为arr1和的大小arr2。
在for循环中i,j在循环后和循环后都增加。该for循环停止,如果这两个i >= arr1.length和j >= arr2.length。由于i和j始终具有相同的值(增量i和之间的时刻除外j),因此如果i和j都已到达其对应列表的末尾,则结束。
在这里,我们作一个假设,递增i和j在固定时间内运行(以及非常大的数字,这将需要O(B)与b具有任意大小数的位数),并且身体中的for循环只包含指令也可以持续运行
假设中没有其他循环//some code here,则时间复杂度为O(N),因为循环会在i<arr1.length和和j<arr2.length,和i和j都在每次迭代时增加时立即中断。它将运行Math.max(arr1.length, arr2.length)迭代。
对于
i<arr1.length || j<arr2.length
Run Code Online (Sandbox Code Playgroud)
成为false(因此没有更多的迭代),需要
i >= arr1.length
// and
j >= arr2.length
Run Code Online (Sandbox Code Playgroud)