n个数相加的时间复杂度是多少

spa*_*dan 3 performance big-o time-complexity

如果我必须添加任意数字,例如数字 1,12,14,71,83,21... 那么此操作的时间复杂度是多少?

我知道两个数字相加的时间复杂度为 O(1),但是 n 个数字的列表又如何呢?假设我为此目的使用最好的数据结构来存储它们,如果有的话,这会对过程产生任何影响!

提前致谢!

Ami*_*mit 5

两个数字相加的时间复杂度为O(1),因为操作本身的时间是恒定的并且输入是固定的。无论输入什么,操作总是会节省时间。

转到项目集合,该操作仍然是恒定时间,但现在会执行多次。输入大小 (N) 越大,花费的时间就越长,并且增长率将是线性的 - 对于输入中的每一个额外项目,操作将多花费 1 个周期。

因此,时间复杂度为O(N)

  • 不太确定 2 个数字相加是否是*O(1)*。如果数字可以是任意大的宽度 W1 和 W2 位,则可能是 *O(log (max(W1,W2)))* .... 如果数字是有界的(例如适合硬件寄存器的 64 位机器数字) ),确实将它们相加是 *O(1)*; bigint 算术不是常数时间! (6认同)