笔记-数据结构与算法-大O表示法

  • 视频链接:https://www.bilibili.com/video/BV1VC4y1x7uv
  • 章节:P9

算法时间度量指标-大O表示法

一个算法所实施的操作数量或步骤数可作为独立于具体程序/机器的度量指标。

  • 赋值语句

    赋值语句可以作为一种通用的基本操作来作为运行步骤的计量单位,一条赋值语句同时包含了(表达式)计算和(变量) 存储两个基本资源。

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

分析SumOfN的赋值语句执行次数,对于“问题规模”n,赋值语句数量T(n)=1+n

  • 问题规模

    问题规模:影响算法执行时间的主要因素。

    在前n个整数累计求和的算法中,需要累计的整数个数合适作为问题规模的指标

    前100,000个整数求和对比前1,000个整数求和,算是同一问题的更大规模

    算法分析的目标:是要找出问题规模会怎么影响一个算法的执行时间

  • 数量函数Order of Magnitude

    基本操作数量函数T(n)的精确值不是特别重要,重要的是T(n)中起决定性因素的主导部分。

    就是当问题规模増大的时候, T(n)中的一些部分会覆盖其它部分的贡献

    数量级函数描述了T(n)中随着n増加而増加速度最快的主部分,称作“大O”表示法,记作O(f(n)),其中f(n)表示T(n)中的主导部分。

  • 确定运行时间数量级大O的方法

    • 例1:T(n)=1+n
      n增大时,常数1在最终结果中显得越来越无足轻重,所以可以去掉1,保留n作为主要部分,运行时间数量级就是O(n)
    • 例2:T(n)=5n^2+27n+1005
      n越来越大,n就越来越重要,其它两項结果的影响越来越小,n^2中的系数5,对于n的増长速度来也影响不大。所以可以在数量級中去掉27n+1005,以及系数5的部分,确定为O(n^2)
  • 影响算法运行时间的其它因素

    有时决定运行时间的不仅是问题规模,某些具体数据也会影响算法运行时间,分为最好最差平均情况

    平均状况体现了算法的主流性能,对算法的分析要看主流,而不被某几种特定的运行状况所迷惑。

  • 常见的大O数量级

    在这里插入图片描述

在这里插入图片描述

  • 从代码分析确定执行时间数量级函数

    代码语句可以分为4个部分:T(n) = 3+3n^2+2n+1 = 3n^2+2n+4

    def func(n):
        # 3次赋值
        a = 5
        b = 6
        c = 10
        # 3 * n^2
        for i in range(n):
            for j in range(n):
                x = i * i
                y = j * j
                z = 1 * j
        # 2 * n
        for k in range(n):
            w = a * k + 45
            v = b * b
        # 1
        d = 33
    

    仅保留最高阶项n^2,去掉所有系数,数量级为O(n^2)

  • 其他算法复杂度表示法

    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值