Java 阵列反转的运行时复杂性?
为什么这个逻辑的运行时复杂性是O(N)?这里的迭代次数只有一半。请解释Java 阵列反转的运行时复杂性?,java,time-complexity,Java,Time Complexity,为什么这个逻辑的运行时复杂性是O(N)?这里的迭代次数只有一半。请解释 for(int i = 0; i < validData.length / 2; i++) { int temp = validData[i]; validData[i] = validData[validData.length - i - 1]; validData[validData.length - i - 1] = temp; } for(int i=0;i
for(int i = 0; i < validData.length / 2; i++)
{
int temp = validData[i];
validData[i] = validData[validData.length - i - 1];
validData[validData.length - i - 1] = temp;
}
for(int i=0;i
大O表示法是关于数量级以及复杂性与元素数量的关系O(1/2*n)==O(n)
我们感兴趣的是,在理论上,算法如何随着输入大小的增长而扩展,并且常数不会在很大范围内影响其行为
因此,在您的情况下,即使您要处理一半的数组
O(1/2*n)
,理论上它的时间复杂度仍然是O(n)
以下之一:
- 常数(O(1))
- 对数(O(对数(N)))
- 线性(O(N))
- 二次(O(N^2))
- 立方(O(N^3))
- 等等
O(N)
是复杂性O(N/2)
的一般近似值,因为1/2
被视为一个常数(特别是考虑到N的高值)
因此,最终复杂度称为线性
(仅取决于N的值:最终执行时间随N线性增长)。复杂度随元素数量线性增长。如果你加倍N
,你的迭代次数就会加倍。实际上,这与“数量级”无关。