在为这段代码的运行时间争论时遇到了一些麻烦。我知道代码在O(n ^ 2)运行,但是有人告诉我解释原因。我认为我需要对此进行一些计算,但是我被卡住了。 我需要弄清楚的算法(伪代码)。
count = 0 1
for i = 0 to n-2 n
for j = 1 to n n^2
if A[j]<A[i] 1
count = count + 1 1
我也写了我认为每行的运行时间。但是,我不知道这是否正确。
答案 0 :(得分:1)
外部循环从0到n-2
除去外部循环中的常量,可以说它将循环n次。 对于外循环中[0..n-2]范围内的每个数字,内循环从[1..n]进行迭代
if i=0, inner loop runs from 1 to n,
if i=1, inner loop runs from 1 to n,
.
.
.
till i=n-2, inner loop runs from 1 to n,
因此时间复杂度为(外循环*内部循环)= O(n*n)
,即O(n^2)
答案 1 :(得分:0)
外部for
循环恰好迭代n-1 = O(n)
次。在外部for
循环的每次迭代中,内部for
循环精确地迭代n = O(n)
次,因此总体上迭代O(n^2)
次。内循环内部完成的工作是恒定时间O(1)
。因此,由于我们重复了O(n^2)
次O(1)
次工作,因此总体时间复杂度为O(n^2)
。