While循环的时间复杂度,从2增加到x,其中x ^ 2 <= N.

时间:2014-11-02 18:31:24

标签: algorithm big-o time-complexity

While循环的时间复杂度是否从2增加到x,其中x ^ 2 <= N O(lg n)? 有人可以解释一下吗?

以下是代码示例:

public static boolean isSquare(long num) {
    if ((num <= 1) && (num > 0)) 
        return true;

    long currentNumber = 2;
    long currentSquare = 4;

    while (currentSquare <= num) {
        if (currentSquare == num)
            return true;

        currentNumber++;
        currentSquare = currentNumber * currentNumber;
    }
    return false;
}

1 个答案:

答案 0 :(得分:2)

不,这种复杂性是 O(sqrt(n))。您可以按正方形改变数字,并将其与数字的平方进行比较。或者你可以将它递增1并与数字的平方根进行比较。