等式:(n(n-1))/2
如果您要编写一个算法来表示这个等式,那么这种算法的复杂性是什么?
答案 0 :(得分:3)
(n*(n-1))/2
的时间复杂度为O(n^2)
。
可以使用1+2+3+4+...n-1
算法评估此表达式O(n)
。并且“结果公式”的时间复杂度不必总是相同(或线性)。 Big O表示法不能像那样应用。
如果函数表示为(n*(n-1))/2
,则其增长率将不是线性的。而且大O符号将讨论函数的增长率,因此(n*(n-1))/2
的时间复杂度为O(n^2)
更具体地说,在为较大的n值计算(n*(n-1))
时,您必须将数字中的每个数字存储在一个数组中,然后将它们相乘。这将花费O(N^2)
时间复杂度,其中N是数字位数。
答案 1 :(得分:1)
(n*(n-1))/2
可以表示为(1 + 2 + ... + (n-1))
。使用此扩展表达式查找总和将具有O(n)
时间复杂度和O(1)
空间复杂度。
如果您不将(n*(n-1))/2
扩展为sum-expression,则O(1)
需要(n*(n-1))/2
时间复杂度。
为什么O(n)
扩展(sum)表达式?
由于您将通过逐个考虑(n-1)
元素来进行添加。
因此,O(n)
被视为与O(n-1)
相同。