Problem Solving with Algorithms

2017-09-18  本文已影响173人  Cluas

文章背景

常常会想这么一件事情,就是实现一个功能可能有很多种不同的方法,那么不同的方法效率都是相同的吗?不同的实现方法我们是否可以进行比较说某方法比另一个方法好呢?又该如何进行比较呢?

目标

    + 1 理解为什么算法分析那么重要
+ 2 能够使用“Big-O”来描述程序执行时间
+ 3 理解同样的操作在Python 列表和字典 (lists and dictionaries)中的执行时间
+ 4了解Python数据的实现如何影响算法分析
+ 学会如何衡量简单的Python程序

什么是算法分析?

   def sumOfN(n):
      theSum = 0
      for i in range(1,n+1):
          theSum = theSum + i

      return theSum

   print(sumOfN(10))
    def foo(tom):
        fred = 0
        for bill in range(1,tom+1):
           barney = bill
           fred = fred + barney

        return fred

    print(foo(10))
   
   >>>for i in range(5):
          print("Sum is %d required %10.7f seconds"%sumOfN(10000))
   Sum is 50005000 required  0.0018950 seconds
   Sum is 50005000 required  0.0018620 seconds
   Sum is 50005000 required  0.0019171 seconds
   Sum is 50005000 required  0.0019162 seconds
   Sum is 50005000 required  0.0019360 seconds
    
    >>>for i in range(5):
           print("Sum is %d required %10.7f seconds"%sumOfN(100000))
    Sum is 5000050000 required  0.0199420 seconds
    Sum is 5000050000 required  0.0180972 seconds
    Sum is 5000050000 required  0.0194821 seconds
    Sum is 5000050000 required  0.0178988 seconds
    Sum is 5000050000 required  0.0188949 seconds
    >>>
   def sumOfN3(n):
      return (n*(n+1))/2

   print(sumOfN3(10))

Big-O 符号

Python列表时间复杂度

image.png

其实因为python列表如果从前面删掉一个的话它会把后面部分整体的位置往左移动一个位置,方便索引吧,我是这么理解的。。。

Python字典时间复杂度

image.png

总结

上一篇 下一篇

猜你喜欢

热点阅读