【问题标题】:Big Oh Notation for 2 nested for loop in finding duplicate element in an arrayBig Oh Notation for 2 嵌套 for 循环在查找数组中的重复元素
【发布时间】: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


【解决方案1】:

嵌套循环算法的最坏情况时间复杂度为 O(n2)

在执行渐近分析时会忽略低阶项和常数因子,因此无论您是否拥有n(n-1)n*(n-1)/2n*(n-5)/6 等都无关紧要。重要的一点是您在这些表达式中具有最高顺序 N2,这就是时间复杂度。

【讨论】:

    猜你喜欢
    • 2011-06-15
    • 1970-01-01
    • 2021-11-11
    • 1970-01-01
    • 1970-01-01
    • 2010-12-27
    • 1970-01-01
    • 2015-01-28
    • 1970-01-01
    相关资源
    最近更新 更多