我有reverse
算法的实现:
function reverse(a) {
let left = 0;
let right = a.length - 1;
while (left < right) {
let tmp = a[left];
a[left] = a[right];
a[right] = tmp;
left += 1;
right -= 1;
}
return a;
}
对于任何n
元素数组,循环将运行n/2
次。但我到处都读到reverse
算法复杂度为O(n)
?那么为什么复杂性O(n)
呢?因为每个周期都有两个操作?
答案 0 :(得分:0)
算法的Big-O指的是算法在n方面的时间复杂度。由于反向方法随n线性增加,即使交换次数可能为c * n(c为常数),也称为O(n)
答案 1 :(得分:-1)
o(n)表示n的函数或n的一些乘数(不是n的任何其他幂)。 n / 2是n的函数(不是n次幂-1或n次幂2)因此它的o(n)。 p.s.-这是基于o(n)的问题,甚至没有使用代码的逻辑