Time complexity 什么是时间复杂性

Time complexity 什么是时间复杂性,time-complexity,Time Complexity,在最后一周的课程中,我们一直在学习时间复杂性,而在线课程并没有真正帮助我,教授也没有真正照本宣科 现在我能理解基本知识,比如 count = 0 for (I = 1; I <=: I++) count++ //The answer is O(n) 但我对许多其他的例子完全感到困惑,教授就是这样解释的 //Time Complexity. cost times sum =0; //c1, 1 for(int

在最后一周的课程中,我们一直在学习时间复杂性,而在线课程并没有真正帮助我,教授也没有真正照本宣科

现在我能理解基本知识,比如

count = 0
for (I = 1; I <=: I++)
    count++
//The answer is O(n)
但我对许多其他的例子完全感到困惑,教授就是这样解释的

//Time Complexity.           cost   times
sum =0;                     //c1,     1
for(int i=0;i<n;i++)        //c2,     N+1
    for(int j=0; j<n; j++)  //c3,     n*(n+1)
        sum = sum + I;      //c4,     n*n
//T(n) = c1*1 + c2(n+1) + c3 * n *(n+1) + c4 * n*n = O(n*n)
我不明白你是怎么得到的

对于这个问题,我一点也不明白

sum =0;                     
for(int i=0;i<N;i++)
    sum += 10*i;        
    for(int j=0; j<n; j++)
        sum += j; 

因此,如代码注释中所述,代码的总时间成本为 //Tn=c1*1+c2n+1+c3*n*n+1+c4*n*n

如果你把它展开并简化,对于一些数字a,b和c,它会变成a*n*n+b*n+c

符号是数学家近似事物的方法;它采用公式中增长最快的部分,并忽略任何常数。在a*n*n+b*n+c中,对于大n,增长最快的部分是a*n*n,我们忽略a作为常数,所以我们只保留n*n,并将其写为On*n


实际上,我们通常将其写在²上,这意味着与在*n上相同。

欢迎使用堆栈溢出。请学习如何使用堆栈溢出,并阅读如何提高问题的质量。然后检查,看看你可以问什么问题。你可能想问这个问题。这对我来说更有意义。对于第三个代码,我给出的答案是0n2,因为它就像你刚才解释的例子,你去掉了A和b,只剩下n*n。主要的警告是,如果我们所说的数字非常长,有几十个或几百个数字,比如一个加密密钥,在这种情况下,仅仅将它们相乘或相加需要时间,这取决于数字的长度。对于普通的整数变量,加法或乘法是常数时间。