Data structures 表示表达式(n*(n-1)/2)的算法的复杂性

Data structures 表示表达式(n*(n-1)/2)的算法的复杂性,data-structures,time-complexity,Data Structures,Time Complexity,对于方程:(n(n-1))/2 如果要编写一个算法来表示这个等式,那么这样一个算法的复杂度是多少?(n*(n-1))/2可以表示为(1+2+…+(n-1))。使用此扩展表达式查找和将具有O(n)时间复杂度和O(1)空间复杂度 如果不将(n*(n-1))/2展开为求和表达式,则执行(n*(n-1))/2需要O(1)时间复杂度 为什么扩展(求和)表达式的O(n) 因为您要通过逐个考虑(n-1)元素来进行加法。 因此O(n)被认为与O(n-1)时间复杂度(n*(n-1))/2将是O(n^2) 这个表达

对于方程:
(n(n-1))/2

如果要编写一个算法来表示这个等式,那么这样一个算法的复杂度是多少?

(n*(n-1))/2
可以表示为
(1+2+…+(n-1))
。使用此扩展表达式查找和将具有
O(n)
时间复杂度和
O(1)
空间复杂度

如果不将
(n*(n-1))/2展开为求和表达式,则执行
(n*(n-1))/2需要
O(1)
时间复杂度

为什么扩展(求和)表达式的
O(n)

因为您要通过逐个考虑
(n-1)
元素来进行加法。 因此
O(n)
被认为与
O(n-1)
时间复杂度
(n*(n-1))/2
将是
O(n^2)

这个表达式
1+2+3+4+…n-1
可以用
O(n)
算法计算。“结果公式”的时间复杂度不一定总是相同的(或线性的)。大O符号不能这样应用

如果函数表示为
(n*(n-1))/2
,则其增长率将不是线性的。大O表示法将讨论函数的增长率,
(n*(n-1))/2的时间复杂度是
O(n^2)


更具体地说,当计算n的较大值时,必须将每个数字存储在数组中,然后将它们相乘。这将需要
O(N^2)
时间复杂度,其中N是位数。

这仅适用于较小的
N
-如果
N
不适合一个(32/64位)寄存器,则不能假设加法或乘法只需要
O(1)
时间。您是在询问针对给定n计算
n*(n-1)/2的算法的复杂性,还是询问需要
n*(n-1)/2
步骤才能完成的算法的复杂性?