对于以下代码:
for(int i = 0; i < Math.pow(n, 3); i++){
...some code here...
}
循环主体是否执行N次?因为随着N的增加,Math.pow被调用的次数。还是我错误地考虑了Big-O,因为它可能也已登录,因为math.pow使循环的运行类似于二进制搜索?
答案 0 :(得分:1)
循环从0迭代到 n 3 -1。如果循环中的代码在恒定时间内执行,并且未修改 i 或 n ,则总体运行时间为 O ( n 3 )。
答案 1 :(得分:1)
根据您的要求。就循环而言,它将操作n ^ 3次,因此得到O(n ^ 3)。如果只问Math.pow函数,则Math.pow(x,y)的复杂度为O(log y),因此在这种情况下为O(1)。
答案 2 :(得分:1)
n的值在循环中不变,因此循环仅执行n ^ 3次。 因此复杂度为O(n ^ 3)。