为什么反向算法O(n)的复杂性?

时间:2017-04-19 17:37:39

标签: algorithm time-complexity

我有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)呢?因为每个周期都有两个操作?

2 个答案:

答案 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)的问题,甚至没有使用代码的逻辑