数据结构与算法分析(二):算法分析

本系列为《Python数据结构与算法分析》第二版学习笔记,作者:布拉德利.米勒;戴维.拉努姆。

算法分析关心的是基于所用的计算资源比较算法。我们说甲算法比乙算法好,依据是甲算法有更高的资源利用率或使用更少的资源。

计算资源究竟指什么?一是考虑算法在解决问题时要占用的空间或内存,二是根据算法执行所需的时间进行分析和比较.

一个算法的具体实例的执行时间不是一个有用指标,因为它依赖于特定的计算机、程序、时间、编译器和编程语言。如果要摆脱程序或计算机的影响来描述算法的效率,量化算法的操作或步骤很重要。

1、大O记法
如果将每一步看成基本计算单位,那么算法的执行时间可以描述为解决问题的步骤数,以计算前N个整数之和为例:

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

该算法执行完整的步骤数T(n) = 1 + n, 参数n被称作“问题规模”。在计算机科学中,精确的步骤数并没有T(n)函数中起决定性作用的部分重要。也就是说,随着问题规模的增长,T(n)函数的某一部分会比其余部分增长的更快,最后比较的其实就是这一起决定性作用的部分。

数量级函数描述的就是,当n增长时,T(n)增长最快的部分,数量级常被称作大O记法(O指order),记作O(f(n)),它提供的是步骤数的一个有用的近似算法。

再比如,某个算法的步骤数是:
在这里插入图片描述
当n很小时,比如说1或2,常熟1005看起来是这个函数中起决定性作用的部分。然而随着n的增长,n2变的很重要。实际上,当n很大时,另两项的作用对于最终结果来说就不显著了,因此可以忽略这两项,只关注5n2。另外,当n足够大时,系数5的作用也不重要了,因此可以说,函数T(n)的数量级是f(n) = n2,或者直接说是O(n2)。

常见的大O函数
在这里插入图片描述
Python列表操作的大O效率
在这里插入图片描述
Python字典操作的大O效率
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值