Time 3个嵌套for循环的时间复杂度

Time 3个嵌套for循环的时间复杂度,time,complexity-theory,Time,Complexity Theory,尽管如此,我还是找到了很好的答案!但是,我需要下面代码段的时间复杂度方程 sum = 0; c1=11 for (i=0; i<N; i++) c2=6 for (j=0; j<N; j++) c2=6 for (j=0; j<N; j++)

尽管如此,我还是找到了很好的答案!但是,我需要下面代码段的时间复杂度方程

sum = 0;                                            c1=11
for (i=0; i<N; i++)                                 c2=6
    for (j=0; j<N; j++)                             c2=6
        for (j=0; j<N; j++)                         c2=7
    sum += arr[i][j]                                c3=2
sum=0;c1=11

对于(i=0;i注释部分很长,因此我将写一个总结所有内容的答案

测量时间复杂性

在计算机科学中,我们通过算法评估所需的步骤/迭代次数来衡量时间复杂度

因此,如果你有一个长度为
n
的简单数组,并且你只遍历这个数组一次,比如说打印所有元素,我们说这个算法是
O(n)
,因为运行所需的时间将与你拥有的数组的大小成比例增长,因此
n

你可以把Big-O
O(…)
看作是一个比较其他函数的高阶函数
这意味着函数的增长速度最多不超过
y=n
一样快,因此是线性的。这意味着如果要将这些函数绘制在一个图上,将有一个点c
x=c
,之后
n
的图将始终位于f(x)之上对于任何给定的x>c,Big-O表示一个函数相对于另一个函数的上界

让我们看看你的原始问题,以及常数时间的含义,假设我们有这个函数

def printFirst5(arr: Array[Int]) = {

     for(i =0 ;i < 5; i++){
         println(arr[i])
     }
 }
这个函数的时间复杂度是O(n3)。为什么?让我们看一下。

最里面的循环将通过每个
j
N个元素 有多少个
j
s?每个
i
将有N个
j
s。 有多少个
i
s?
N
很多

所以我们总共得到了
numberofi*numberofj*numberofk=N*N*N=O(N^3)

只是为了确保正确理解这一点,让我们看看另一个例子。如果这些循环没有嵌套会发生什么?如果我们有:

    def printAllx3(array: Array[Int]) = {
       for(i=0; i < array.length; i++){
           println(s"array[i]")
       }

       for(j=0; j < array.length; j++){
           println(s"array[j]") 
       } 

       for(k=0; k< array.length; k++{
              println(s"array[k]")
        }
    }
def printAllx3(数组:数组[Int])={
对于(i=0;i
这里是什么情况

第一个循环通过N个元素,第二个循环通过N个元素,第三个循环通过N个元素。但是它们在迭代方面并不相互依赖,所以我们得到
N+N+N=3N=O(N)

你看到区别了吗

恕我直言,我相信你错过了时间复杂性的一些基本知识&我们如何衡量时间复杂性。我在这里只能解释这么多,我强烈建议你阅读一下这个主题,并提出任何你不理解的问题


希望这有助于

技术上,这是一个固定的时间。没有变量输入。它总是需要125个步骤。或者根据语言,它可能甚至没有编译,因为你有两个循环,使用JLET的考虑第三个循环有“k”而不是“j”,那么什么?没关系,你总是精确地循环5次。如果你通过这个程序(假设有一个),它将始终需要125个步骤,即O(1),迭代次数需要取决于一个变量值才能达到其他任何一致意见。但是,涉及成本关联c1、c2、c3的方程应该是什么,用N²或N³表示?这就是我一直试图告诉你的。这里没有N。所有这些循环都是N^0=1。请阅读这里关于常数时间的内容:对于这个算法,be N^2或N^3必须是
(i=0;i
看看这里怎么有一个变量N。这就是大o中N的来源
    def printAllx3(array: Array[Int]) = {
       for(i=0; i < array.length; i++){
           println(s"array[i]")
       }

       for(j=0; j < array.length; j++){
           println(s"array[j]") 
       } 

       for(k=0; k< array.length; k++{
              println(s"array[k]")
        }
    }