Time complexity 这个问题的时间复杂性是什么? 代码: intmain() { 对于(long long i=0;i
时间复杂度仅在可变大小数据集的上下文中才有意义;它描述了随着数据集大小的增加,程序的总执行时间将以多快的速度增加。例如,如果您有N个项目要处理,并且您的算法需要读取这些项目的固定次数,则您的算法ithm被认为是O(N) 在第一种情况下,如果我们假设您有一个当前大小为10000000的“数据集”,那么您的单个for循环将是O(N)——但请注意,由于for循环没有任何可观察的效果,优化编译器可能会完全忽略该循环,将其有效地减少为O(1)Time complexity 这个问题的时间复杂性是什么? 代码: intmain() { 对于(long long i=0;i,time-complexity,Time Complexity,时间复杂度仅在可变大小数据集的上下文中才有意义;它描述了随着数据集大小的增加,程序的总执行时间将以多快的速度增加。例如,如果您有N个项目要处理,并且您的算法需要读取这些项目的固定次数,则您的算法ithm被认为是O(N) 在第一种情况下,如果我们假设您有一个当前大小为10000000的“数据集”,那么您的单个for循环将是O(N)——但请注意,由于for循环没有任何可观察的效果,优化编译器可能会完全忽略该循环,将其有效地减少为O(1) 在第二个(嵌套循环)示例中(假设变量集大小为10000),算法
在第二个(嵌套循环)示例中(假设变量集大小为10000),算法为O(N^2),因为程序必须运行的步数随着集大小的平方而增加。这是正确的,无论内部
if
测试计算为真的频率有多高,因为程序必须执行一些步骤(例如,计算if
条件)N*N次否if测试计算为true的频率(或很少)(同样,如果编译器能够以某种方式证明if
语句从未计算为true,或者func()
函数没有可观察到的副作用,在这种情况下,它可以合法地忽略整个事件,只立即返回0
。您的第一个代码的最坏情况复杂度为O(n)
,因为它迭代了n次
次。无论它在每次迭代中什么都不做或做了无数事情,它总是具有O(n)
复杂性。它可能不会被优化掉,优化器也可能不会跳过空循环
同样,您的第二个程序的复杂性为
O(n^2)
因为它迭代了很多次n^2
。内部的if
条件在某些情况下可能满足,也可能不满足,并且程序可能在if
不满足的情况下不执行,但它访问n^2
情况,这足以建立O(n^2)
复杂性。第一个代码是O(n)常数时间复杂度,第二个是O(n^2)二次时间复杂度我知道了,thanx:)thanx表示信息:)
int main()
{
for(long long i=0;i<10000000;i++)
{
}
return 0;
}
int main()
{
for(long long i=0;i<10000;i++)
{
for(long long i=1;i<10000;i++)
{
if(//"some condition")
{
func(); // some function which we know is going to run only one-hundredth of the time due to the condition. time complexity of func() is O(1).
}
}
}
return 0;
}