【发布时间】:2020-11-15 17:31:24
【问题描述】:
for i=1 to n
for j=i+1 to n
if A[i]==B[j] return TRUE
return FALSE
查询:在上面嵌套的 for 循环中 --> 第一个 for 循环有 n 次迭代 第二个循环有 n-1 次迭代。
因此发生 n(n-1) 次迭代。 但实际上是n(n-1)/2倍。想知道它是如何多了一半的时间。需要帮助。
【问题讨论】:
-
big o 不关心常量。而big o 只关心增长最快的价值。 n(n-1)/2 == n^2
-
@Siva 如果你已经知道了,那么我不确定你的问题是什么?
-
实际上并不是
n*(n - 1)迭代。迭代次数为(n - 1) + (n - 2) + ... + (n - (n - 1)),简化为n * (n - 1) / 2 -
@NickParsons 这是一个错字,现在已更新。感谢您解释中间循环迭代。
-
@CaptainDaVinci heyyy 终于明白了,谢谢欢呼声 :) 假设 n= 4,就像打印 3+2+1 = 6 次语句,得到 4(4-1)/2 = 12/ 2--> 6 :) 谢谢大家。
标签: java arrays loops duplicates big-o