Shift和Add乘法的时间复杂度

时间:2014-11-20 09:31:29

标签: time-complexity multiplication

我试图找出计算机移位的时间复杂度,并根据下图添加乘法算法:

enter image description here

因此,如果一个整数是A位宽并且操作的每一步都需要B个时间单位,并且总是进行加法步骤,那么这个算法的时间复杂度是O(n * n),每个移位和加法是O(n)?

1 个答案:

答案 0 :(得分:1)

如果计算位操作,则得到O(n *(n + m)),当n是最小操作数中的位数,m是乘积中的位数。 (比较两个操作数,并选择最小的乘数;循环退出条件是移位乘数为零)。由于m = n + k,其中k是被乘数中的位数,因此基本上得到O(n ^ 2)。

但这在实践中是不切实际的。

在大多数CPU上,移位(特别是1个单位)指令并添加指令需要单位时间。因此,如果您想要单位机器指令的复杂性,则移位和相加乘法是O(n)。