这段matlab代码时间复杂度是多少?
for h=1:P
if mplength(:,h)> D0
bufuhemp(:,h)=[h];
end
end
if mplength(:,h)> D0
bufuhemp(:,h)=[h];
end
上面这段是固定的判断,在时间复杂度上可以看成定值。我们在matlab里可以以disp(1)代替。
这样一来程序就成了
for h=1:P
disp(1)
end
显然,假设disp(1)的执行时间是k,则总时间是k*P。执行实现与P的大小程线性关系,所以是O(n)
然后可以在matlab里验证一下,先把p改成10000,显示运行时间是0.26秒
再把p改成100000,显示运行时间是2.5秒,基本是之前的10倍,显示的确是O(n)的关系
感觉是O(n)