Java 这段代码的运行时复杂性是多少?说明中给出了代码
我说这段代码的运行时复杂性是(2N+2)对吗Java 这段代码的运行时复杂性是多少?说明中给出了代码,java,loops,time-complexity,computer-science,complexity-theory,Java,Loops,Time Complexity,Computer Science,Complexity Theory,我说这段代码的运行时复杂性是(2N+2)对吗 publicstatic int[]mystery1(int[]list){ int[]结果=新的int[2*list.length]; for(int i=0;i
publicstatic int[]mystery1(int[]list){
int[]结果=新的int[2*list.length];
for(int i=0;i
谢谢你的帮助 不确定为什么+2,但我想说这段代码的复杂度是O(n)来计算复杂度,然后你应该看循环的数量,不要看其他东西,所以在你的例子中,你有一个循环,所以复杂度是
O(n)
考虑循环内整个赋值的c_0运行时。它们消耗2ncu0。For循环总是检查条件n+1次,因此它消耗2nc_1。还有一行代码执行一次,我认为他们采取CY3。答案是2n(c_0+c_1)+c_3,也就是O(n),我们在报告复杂性时会删除常数。O(2n+2)正确地写成O(n)。
public static int[] mystery1(int[] list) {
int[] result = new int[2*list.length];
for (int i = 0; i < list.length; i++) {
result[2 * i] + list[i] / 2 + list[i] % 2;
result[2 * i + 1] = list[i] / 2;
}
return result;
}