Algorithm 该算法的最坏时间复杂度是多少? 过程矩阵向量(n:整数); var i,j:整数; 开始 对于i

Algorithm 该算法的最坏时间复杂度是多少? 过程矩阵向量(n:整数); var i,j:整数; 开始 对于i,algorithm,complexity-theory,Algorithm,Complexity Theory,O(n^2),如果我读对了 我不明白为什么你需要两个内环。为什么不在同一个循环中求B和C的和?最坏的情况是O(n²)。 确实有三个环,但并非都在彼此内部,因此给出O(n²) 此外,您可以清楚地看到,内部循环不会从1变为n(就像外部循环一样)。但是因为这只会改变时间复杂度的某个常数,我们可以忽略它,说它只是O(n^2) 这表明时间复杂度是一种衡量标准,即:您的算法将按此顺序扩展,并且不会再花费更长的时间。(但是,更快的速度始终是可能的) 有关“计算”任何算法的最坏情况复杂度的更多信息,我可以向您指

O(n^2),如果我读对了

我不明白为什么你需要两个内环。为什么不在同一个循环中求B和C的和?

最坏的情况是O(n²)。

确实有三个环,但并非都在彼此内部,因此给出O(n²)

此外,您可以清楚地看到,内部循环不会从1变为n(就像外部循环一样)。但是因为这只会改变时间复杂度的某个常数,我们可以忽略它,说它只是O(n^2)

这表明时间复杂度是一种衡量标准,即:您的算法将按此顺序扩展,并且不会再花费更长的时间。(但是,更快的速度始终是可能的)


有关“计算”任何算法的最坏情况复杂度的更多信息,我可以向您指出一个

为初学者详细解释:

最外层的for循环将运行n次(0到n) 然后在out-ermost-for循环中有两个for循环。 第一个for循环将从1变为n(1+2+3+4+…+n) 第二个for循环将从n变为1(n+n-1+n-2+1)

(1+2+3+4+5+n)的求和公式为n(n+1)/2

因此,总运行时间可以计算为n+n(n+1)/2+n(n+1)/2

观察这个方程中的最高多项式,它是n^2


我们可以进一步简化这个方程,去掉常数,忽略线性部分,这将给我们一个n^2的运行时间。

我以为我的眼睛在欺骗我。当我第一次读到这篇文章时,它没有格式化。当页面刷新时,它的格式很好,Jon Skeet的照片就在我面前。我认为格式是技巧的一部分。我第一次看不到另一个循环中有两个循环,我认为有3个嵌套循环。我不明白为什么要问“最坏情况”的时间复杂度,因为这里没有案例——它总是执行相同的操作。为什么在同一个循环中求和?为什么不?干式原理说你会少一个回路。像这样单独计算有什么好处?对于两个环路,n*(n+n)=2n^2;n*n=n^2表示一个。Big-O去掉了常数,但是你的挂钟没有。但是内部循环的大小不是n,它们的总和是n,所以这应该有大约相同的运行时间,就像循环被组合一样。实际上,它可能更快,因为如果循环被组合,你需要切换,或者基于循环索引的值(B如果jprocedure matrixvector(n:integer); var i,j:integer; begin for i<-1 to n do begin B[i] = 0; C[i] = 0; for j<-1 to i do B[i]<- B[i]+ A[i,j]; for j<-n down to i+1 do C[i]<-C[i] + A[i,j] end end;