Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 当i为外环且内环以j=i+开始时双环的时间复杂度;1._Arrays_Loops_Time_Double_Complexity Theory - Fatal编程技术网

Arrays 当i为外环且内环以j=i+开始时双环的时间复杂度;1.

Arrays 当i为外环且内环以j=i+开始时双环的时间复杂度;1.,arrays,loops,time,double,complexity-theory,Arrays,Loops,Time,Double,Complexity Theory,我试图更清楚地了解我在下面写的算法的复杂性: left = 1 right = 1 for i=0; i < array.len; i ++: j = i+1 for j; j < array.len; j++: right *= array[j] tmp[i] = array[idx] left *= array[idx] right = 1 return tmp left

我试图更清楚地了解我在下面写的算法的复杂性:

left = 1
right = 1

for i=0; i < array.len; i ++:
        j = i+1
        for j; j < array.len; j++:
             right *= array[j]
        tmp[i] = array[idx]
        left *= array[idx]
        right = 1
return tmp
left=1
右=1
对于i=0;i
如果我们将数组大小定义为n,那么外循环为O(n),但内循环并不是一直迭代n-1次,只有在i=0时才迭代第一次

那么,复杂性是什么呢? O(n)用于外环和 O(n-j)表示内环? 那么,可能是O(n(n-j))?哪个是O(n^2)


请帮忙。

是的,O(n^2)是时间复杂度。第一个循环运行n次。第二个循环在第一个循环的每次迭代中运行n次。n*n=n^2

你说得对:)注意“第二个循环每次迭代运行n次”–
j
i+1开始,而不是0.ahh,是的,公平点。虽然(n)*(n-1)仍将被视为n^2。(n^2-n我们只是去掉了n)@knowKnothing“complete”big-O符号仍然是
O(n^2)
。然而,内部循环的“精确”执行次数是
n*(n-1)/2
@meowgoesthedog thx,我理解n*(n-1),但在这种情况下,1/2因子对我来说有点神秘。然而,我知道在某些情况下,比如从两端开始迭代数组start_idx和last_idx,以及开始迭代数组start_idx++和last_idx,会产生O(n/2)的复杂度。这是相似的吗?nvm,我相信类似的内循环迭代减半是由上面的j=I+1完成的。谢谢大家。@knowKnothing如果您不确定1/2因子的来源,请参阅。但它只是一个乘法常数因子,所以被O表示法丢弃。