【问题标题】:time complexity regarding elses?关于其他的时间复杂度?
【发布时间】:2018-06-08 17:25:14
【问题描述】:

我找不到任何关于它的信息,所以我希望你能帮助我。 问题是关于 for 循环中的嵌套 else-ifs 和时间复杂度计算。

我的通用代码是:

for(i=0; i<n; i++)
{
  if(___);
  else 
  {
    if(___);
    else(___);
  }
}

如果 O(1),每个 (___) 都是复杂度。 我遇到的问题是我一直对如何计算未简化的 big-O 复杂度感到困惑,因为 else 和嵌套的 if-else。 是 O(n*1+1+1+1) 吗?或者可能是 O(n*1+1*(1+1))? 我该如何接近它?

【问题讨论】:

    标签: java time-complexity big-o nested-if


    【解决方案1】:

    由于O(1)O(n) 相比是渐近微不足道的,所以无论您使用哪一个,结果仍然是O(n)

    如果你做了最坏的情况,那将是O(n) * [O(1) + O(1) + O(1)] = O(2n) => O(n),对于循环的每次迭代,你都在执行每个条件,所以它是 n * 2 操作.

    【讨论】:

    • 为了澄清,我看一下第一个 if 并看到它的 O(1),然后我添加第一个 else,我知道它由 2 个 O(1) 语句组成(第二个 if 和 else),因此我的最终计算是 O(n) * [O(1) + O(1)]?
    • 那么每个 if 都有一个条件(它本身具有复杂性)和随后的操作。假设每个条件的复杂度为O(1),每个 if/else 的代码的复杂度为O(1)。最坏的情况是检查 if (O(1)),转到相应的 else,执行另一个 if 条件 (O(1)) 的 else 操作,然后转到最后一个 else,即 O(1)。所以最坏的情况是O(1) + O(1) + O(1) 每次迭代
    猜你喜欢
    • 2016-02-13
    • 1970-01-01
    • 1970-01-01
    • 2018-08-29
    • 1970-01-01
    • 2023-01-12
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多