Time complexity 这个问题的时间复杂性是什么? 代码: intmain() { 对于(long long i=0;i

Time complexity 这个问题的时间复杂性是什么? 代码: intmain() { 对于(long long i=0;i,time-complexity,Time Complexity,时间复杂度仅在可变大小数据集的上下文中才有意义;它描述了随着数据集大小的增加,程序的总执行时间将以多快的速度增加。例如,如果您有N个项目要处理,并且您的算法需要读取这些项目的固定次数,则您的算法ithm被认为是O(N) 在第一种情况下,如果我们假设您有一个当前大小为10000000的“数据集”,那么您的单个for循环将是O(N)——但请注意,由于for循环没有任何可观察的效果,优化编译器可能会完全忽略该循环,将其有效地减少为O(1) 在第二个(嵌套循环)示例中(假设变量集大小为10000),算法

时间复杂度仅在可变大小数据集的上下文中才有意义;它描述了随着数据集大小的增加,程序的总执行时间将以多快的速度增加。例如,如果您有N个项目要处理,并且您的算法需要读取这些项目的固定次数,则您的算法ithm被认为是O(N)

在第一种情况下,如果我们假设您有一个当前大小为10000000的“数据集”,那么您的单个for循环将是O(N)——但请注意,由于for循环没有任何可观察的效果,优化编译器可能会完全忽略该循环,将其有效地减少为O(1)


在第二个(嵌套循环)示例中(假设变量集大小为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;
}