时间复杂度和功能空间

时间:2016-08-14 09:16:57

标签: c algorithm time-complexity computer-science

找到下一个功能的复杂性时,我很难找到

void what(int n) {
    int i;
    for (i = 1; i <= n; i++) {
        int x = n;
        while (x > 0)
            x -= i;
    }
}

我试图通过接下来的事情来解决它 在寻找太空时,我发现它只有O(1),因为没有采取它。 在考虑时间的时候 我认为,因为每次分开它将是n(1 + 1/2 + 1 + 4 + ....)= O(N.log(N)) 这是对的吗? 谢谢

1 个答案:

答案 0 :(得分:1)

简单分析给出了 O(N.log(N))的时间复杂度,但应该注意循环不计算任何东西:局部变量x递减n / i次并丢弃。一个好的编译器应该能够将整个函数编译为no-op:void what(int n) {},这导致了 O(1)的复杂性,无论是空间还是时间。