(数据结构python版)第3章算法分析

第三章算法分析

数据结构:组织和访问数据的一种系统化方式

算法:在有限的时间内一步步执行某些任务的过程

实验研究

实验分析的挑战

使用算法分析的3个局限性:

  • 很难直接比较两个算法的实现运行时间,除非实验在相同的硬件和软件环境中执行
  • 实验只有在有限的一组测试下才能完成,因此他们忽略了不包括在实验中的输入的运行时间
  • 为了在实验上执行算法来研究它的执行时间,算法必须完全实现

进一步的实验分析

开发一种分析算法效率的方法:

  • 在软硬件环境独立的情况下,在某种程度上允许我们评价任意两个算法的相对效率
  • 通过研究不需要实现的高层次算法描述来执行算法
  • 考虑所有可能的输入

计算原子操作

定义了一系列原子操作:

  • 给对象指定一个标识符
  • 确定与这个标识符相关联的对象
  • 执行算术运算(如:两个数相加)
  • 比较两个数的大小
  • 通过索引访问Python列表的一个元素
  • 调用函数
  • 从函数返回

随着输入函数的变化进行测量操作

把每一个算法和函数f(n)联系起来,其中把执行的原子操作的数量描述为输入大小n的函数f(n)

最坏情况输入的研究

把算法的运行时间表示为所有可能的相同大小输入的平均值的函数

最坏情况分析比平均情况分析容易很多

最坏情况的设计会使得算法更加健壮,(一个飞毛腿总是在斜坡上练习跑步)

本书使用的7种函数

常数函数

最简单的函数

f ( n ) = c f(n)=c f(n)=c(c为常数)

对数函数

x = l o g b n x=log_bn x=logbn 当且仅当 b x = n b^x=n bx=n

对数规则:(给定实数a>0,b>1,c>0,d>1)

  1. l o g b ( a c ) = l o g b a + l o g b c log_b{(ac)}=log_ba+log_bc logb(ac)=logba+logbc
  2. l o g b ( a / c ) = l o g b a − l o g b c log_b(a/c)=log_ba-log_bc logb(a/c)=logbalogbc
  3. l o g b ( a c ) = c l o g b a log_b(a^c)=clog_ba logb(ac)=clogba
  4. l o g b a = l o g d a / l o g d b log_ba=log_da/log_db logba=logda/log
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值