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