Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 这个for循环的时间复杂度是多少? (i=0;i_Algorithm_Big O_Time Complexity - Fatal编程技术网

Algorithm 这个for循环的时间复杂度是多少? (i=0;i

Algorithm 这个for循环的时间复杂度是多少? (i=0;i,algorithm,big-o,time-complexity,Algorithm,Big O,Time Complexity,就我所知,复杂性无法确定。 迭代永远不会进行,因此循环基本上是无限循环。正如注释中所说的,循环只在n时终止≤ 0。每隔n,程序不会终止 我认为如果你有一些永远不会终止的东西,你就不想谈论复杂性,因为复杂性是用来了解大输入的运行时间和比较算法的 您甚至不能说您拥有的代码是一个算法,因为算法的定义通常包含必须终止的代码 如果你被要求在big-o中写下一些东西,有不止一种方法来看待这个问题 该算法永远不会终止,因此它会进行无限次运算,您无法找到常数c和函数f(n)(多项式或指数)与∞ < C⋅f(n)

就我所知,复杂性无法确定。
迭代永远不会进行,因此循环基本上是无限循环。

正如注释中所说的,循环只在
n时终止≤ 0
。每隔
n
,程序不会终止

我认为如果你有一些永远不会终止的东西,你就不想谈论复杂性,因为复杂性是用来了解大输入的运行时间和比较算法的

您甚至不能说您拥有的代码是一个算法,因为算法的定义通常包含必须终止的代码

如果你被要求在big-o中写下一些东西,有不止一种方法来看待这个问题

  • 该算法永远不会终止,因此它会进行无限次运算,您无法找到常数
    c
    和函数
    f(n)
    (多项式或指数)与
    ∞ < C⋅f(n)
    用于
    n<∞,所以它应该是
    O(∞)
    这得到了big-o的正式定义的支持
  • 如果查看已执行操作数的变化,如果将输入加倍,
    n→ 2n
    您可以看到,执行的操作的数量没有改变,因此也可能是
    O(1)

    这是由递归公式
    T(n)=T(n-1)
    支持的。最后,您必须定义
    T(1)
    是什么。复杂性与小的或特定的输入无关,因此可以定义
    T(1)=O(1)
  • 这两种方法都说,运行时间不依赖于输入,但第二种方法主要是哲学的,第一种方法应该是首选方法


    但正如我在开始时所说的:您不想谈论永不终止的代码的复杂性(或者只针对不相关的情况).

    这取决于
    n
    的值,它永远不会继续,这不是真的。如果n0,它是常数时间。或者,如果
    i
    在循环体中被修改,那么它就完全是常数时间!25*0=0,所以你的
    $i
    从0开始,并且总是0。因此,这个循环的复杂性是O(无穷大)。
    for(i=0; i < n; i * = 25)