我试图围绕研究算法相对于比特成本(而不是单位成本)的时间复杂度的概念展开思考,似乎不可能找到任何关于该主题的内容。
这是我到目前为止所拥有的:
使用任意算术运算,两个数的 n 位乘法和除法的位成本为 O(n^2)。
因此,例如:
int number = 2;
for(int i = 0; i < n; i++ ){
number = i*i;
}
相对于 O(log(n)^2*n) 的位成本具有时间复杂度,因为它进行 n 次乘法并且i
具有log(i)
位。
但在常规场景中,我们需要与输入相关的时间复杂度。那么,这种情况如何运作?中的位数i
可以被认为是一个常数。这将使时间复杂度与单位成本相同,但常数更大(因此两者都是线性的)。
加法、减法、比较和分配变量都是 O(n),n 是位数,用于任意精度算术。