分析通用算法的复杂性

时间:2014-11-11 15:47:13

标签: 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)时间。(这是对吗?)

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

1 个答案:

答案 0 :(得分:6)

这将是O(n ^ 2),因为n增长n ^ 2会使O(n)部分相形见绌,因此部分会掉出来。例如,当n为100.第一次操作将花费100个单位时间,第二次操作将花费10,000个单位。 99%的计算时间将用于第二次操作。随着n增加,第二次操作将继续占主导地位。我认为没有理由认为它不是O(n)空间复杂性。