Math 嵌套for循环的运行时估计/大O表示法

Math 嵌套for循环的运行时估计/大O表示法,math,time-complexity,big-o,Math,Time Complexity,Big O,我很难理解函数f(x)的含义,它表示在某些代码中执行的操作数 int sum = 0; // + 1 for (int i = 0; i < n; i++) for (int j = 1; j <= i; j++) sum = sum + 1; // n * (n + 1) / 2 int sum=0;//+1. 对于(int i=0;i

我很难理解函数f(x)的含义,它表示在某些代码中执行的操作数

int sum = 0; // + 1
for (int i = 0; i < n; i++)
    for (int j = 1; j <= i; j++)
        sum = sum + 1; // n * (n + 1) / 2
int sum=0;//+1.
对于(int i=0;i对于(intj=1;j想想,在整个代码执行过程中,内部循环将运行多少次

  • 当i=0时,它运行零次
  • 当i=1时,它运行一次
  • 当i=2时,它运行两次
  • 当i=3时,它运行三次
  • …;以及
  • 当i=n-1时,它运行n-1次
这意味着最里面的循环运行的总次数由

0+1+2+3+4+…+(n-1)

这是一个著名的总结,它解决了

0+1+2+3+4+…+(n-1)=n(n-1)/2

这是第n-1次,值得将其保存到内存中

给定的数字-n(n+1)/2-似乎不正确,但它非常接近真实数字。我认为他们假设循环将运行1+2+3+…+n次,而不是0+1+2+…+n-1次


由此可以更容易地看出O(n2)项的来源/2=n2/2-n/2,因此在大O区,我们去掉常数和低阶项,剩下的是n2。

仍在努力获得这些小重复:D@willywonkadailyblah主要是想帮忙!如果你不知道它是从哪里来的,也不知道该用谷歌搜索什么,这类事情看起来是完全神秘的。