Math 嵌套for循环的运行时估计/大O表示法
我很难理解函数f(x)的含义,它表示在某些代码中执行的操作数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
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主要是想帮忙!如果你不知道它是从哪里来的,也不知道该用谷歌搜索什么,这类事情看起来是完全神秘的。