What is the time complexity of the following function?

后端 未结 3 1722
走了就别回头了
走了就别回头了 2020-12-17 04:00
    int func(int n){
       if(n==1)
         return 0;
       else
         return sqrt(n);
    }

Where sqrt(n) is a C math.h library function.

3条回答
  •  孤城傲影
    2020-12-17 04:37

    This depends on the implementation of sqrt and also on what kind of time complexity you are interested.

    I would say you can consider it to be "constant", so O(1), in that sense: If you put in a random int, it will in average take the same amount of time. (Reason: numbers with many digits are much more common).

    But have a look here. Another possible answer is O(M(n)), where M(n) is the complexity of a multiplication and n is the number of digits in your integer.

    This looking like a text-book question and a is perhaps meant to be a trap. The teacher perhaps wants to check if you can distinguish between computing sqrt for a list of numbers (which would be O(n)), and a single number (which would be O(1)).

    Be aware that the "correct" answer often also depends on the context in which it is asked.

提交回复
热议问题