无论如何实现乘法(或除法)操作(即,它是软件功能还是硬件指令),它都无法在时间O(1)
内解决。对于较大的n
值,处理器甚至无法通过一条指令进行计算。
在这种算法中,为什么这些操作是恒定的而不依赖于n
?
for (i = 1; i <= n; i++) {
j = n;
while (j > 1)
j = j / 3; //constant operation
}
答案 0 :(得分:3)
时间复杂度不能衡量时间。它是可以定义所需“基本操作”的一种度量。通常,任何算术运算都被视为基本运算。有时(例如,当考虑排序算法或哈希表操作的时间复杂性时),基本操作是比较。有时,“基本运算”是对单个位的运算(在这种情况下,j=j/3
的时间复杂度为O(log(j))。
倾向于遵循的规则是: