Time complexity 一般算法复杂度分析

Time complexity 一般算法复杂度分析,time-complexity,Time Complexity,假设我有这样一个程序: def fn(array,num): for i in range(0,len(array)): if(i==num):print i for i in range(o,len(array)): for j in range(0,i): if(i*j==num):print i,j 所以第一个循环在O(n)时间内运行。 第二个循环以O(n*n)时间运行 总体时间复杂度为O(n)+O(n^2)= O(n^2)时间。(这对吗

假设我有这样一个程序:

def fn(array,num):
   for i in range(0,len(array)):
     if(i==num):print i


   for i in range(o,len(array)):
     for j in range(0,i):
       if(i*j==num):print i,j
所以第一个循环在O(n)时间内运行。 第二个循环以O(n*n)时间运行

总体时间复杂度为O(n)+O(n^2)= O(n^2)时间。(这对吗??)

同样,空间复杂度将是O(n),因为我们在内存中有n个块来存储n个元素(这是正确的吗??) 这是分析运行时间和空间复杂度的正确方法吗?我可以分析常见排序算法和数据结构的时间复杂度,但仅仅为了一个通用程序,我分析它有点困难。谢谢

这将是O(n^2),随着n的增长,n^2将使O(n)部分变得矮小,从而使部分脱落。例如,当n为100时。第一次操作需要100个时间单位,第二次操作需要10000个时间单位。99%的计算时间将花费在第二次操作上。随着n的增加,第二个操作将继续占主导地位。我看没有理由不考虑O(n)空间的复杂性