1.数据结构&算法的引言+时间复杂度

2020-12-13 02:05

阅读:656

  • 分析:很明显上述两中问题的解决方案是不同的。那如何判定上述两种解决方案(算法)的优劣呢?有同学会说,观察计算两种算法使用耗费计算机资源的大小和它们的执行效率呀!但是我想说的是,一些较为复杂的算法,它耗费计算机资源的大小和执行效率我们很难能够直观的从算法的编码上分析出来。所以我们必须采用某种量化的方式求出不同算法的资源耗费和执行效率的具体值来判定算法之间的优劣。问题来了,如何进行量化计算呢?方法有两种:

    #方法1:计算算法执行的耗时(不推荐)。
    import time
    start_time = time.time()
    for a in range(0,1001):
        for b in range(0,1001):
            for c in range(0,1001):
                if a**2+b**2 == c**2 and a+b+c==1000:
                    print(a,b,c)
    end_time = time.time()
    print(end_time-start_time)
    
    #执行结果为:
    0 500 500
    200 375 425
    375 200 425
    500 0 500
    1221.7778379917145
    
    #方法2:计算算法的时间复杂度(推荐)
    import time
    start_time = time.time()
    for a in range(0,1001):
        for b in range(0,1001):
            c = 1000 - a - b
            if a**2+b**2 == c**2 and a+b+c==1000:
                    print(a,b,c)
    end_time = time.time()
    print(end_time-start_time)
    
    #执行结果为:
    0 500 500
    200 375 425
    375 200 425
    500 0 500
    1.410386085510254
    • 注意:单靠执行时间可以反应算法的效率吗?不能。跟机器(执行环境)存在很大关系。

  • 评论


    亲,登录后才可以留言!