算法度量方法——时间复杂度及空间复杂度

本文探讨了衡量算法效率的两个关键指标:时间复杂度和空间复杂度。介绍了事后统计方法和事前分析估算法,并详细阐述了如何推导大O阶,包括常数阶、线性阶、对数阶和平方阶等常见时间复杂度。同时,提到了空间复杂度的计算,指出在评估算法性能时,不仅要考虑时间需求,还要关注空间需求。
摘要由CSDN通过智能技术生成

以前对这方面是一知半解,终于在一次大众点评的笔试中受到刺激。

步入正题:什么样的算法才是高效的算法?想必所有的人都这么想过:用最少的钱,花做最短的时间,买到最多的东西。同样,用最少的内存空间,花最短的时间解决问题的算法就是。因此我们考虑用时间和空间来衡量一个算法的效率。

首先我们来考虑如何利用时间来衡量算法效率。比较容易想到的方法时,可以利用计算机计时的功能,来计算不同算法的效率。在此基础上衍生了几种方法:

事后统计方法:通过设计好的测试程序和数据,利用计算机的计时功能对实现不同的算法的程序运行,通过比较运行时间来确定算法效率的高低。

 咋眼一看,感觉好简单啊。但是问题来了:首先必须必须根据算法编写好程序,通常这会花掉很多时间。对于有些糟糕的算法,这无疑是中时间上的浪费。其次,这种方法受环境影响太大,主要是硬件环境和软件环境。我们很难模拟两种完全一样的运行环境。最后,测试算法的数据设计比较麻烦。尤其是在需要的测试据 的模很大的时候,显得非常麻烦。

总之,这种事后统计的方法太过于麻烦,因此不考虑。

事前分析估算法:在编制程序之前,依据统计方法进行估算。

统计发现用高级语言编写的程序运行时所消耗的时间主要受这几方面影响:

  1. 算法采用的策略,这是算法好坏的根本。
  2. 编译产生的代码质量
  3. 问题输入规模
  4. 机器硬件环境,主要是执行指令速度。

抛开硬件和软件等因素,单纯的懂算法来考虑,我们发现,一个程序的好坏依赖于算法策略和输入规模。

程序运行所耗费的时间主要是用来执行指令,因此,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值