算法分析:原理与实践
1. 算法分析简介
在开发算法时,我们往往没有深入思考算法的优劣,只是模糊地知道某些算法在特定情况下可能更高效。然而,我们并未严谨地分析算法所需的工作量和内存消耗,也就是没有进行细致的算法分析。
算法分析指的是尽可能精确地确定算法执行时所消耗的各种资源(如时间和内存)的过程。接下来,我们将介绍一种分析算法的方法,并通过几个简单的算法来展示其应用。主要关注算法的工作量,偶尔也会考虑内存消耗。
2. 衡量算法工作量
2.1 时间测量的问题
一种直观衡量算法工作量的方法是测量其执行任务所需的时间。但在使用秒表计时之前,我们需要考虑这种方法存在的问题。要测量算法的运行时间,需将其编写成程序,这会带来以下困难:
- 编程语言因素 :程序需用特定编程语言编写,我们难以确定语言本身、编译器或解释器是否会人为地增加或减少算法的运行时间。
- 机器和操作系统因素 :程序在机器上运行,受操作系统控制。不同机器的速度和容量不同,操作系统可能引入延迟,机器上运行的其他进程也可能干扰程序计时。
- 程序员因素 :程序由程序员编写,不同程序员编写的代码运行速度不同。
如果不消除这些干扰因素,我们无法获得可靠的算法工作量测量结果,而只能得到特定程序员用特定语言编写的程序在特定机器和操作系统负载下的运行时间。
2.2 操作计数法
为解决上述问题,我们放弃直接测量算法的运行时间,而是从抽象层面关注算法,不考虑其在特定机器和操作系统上的具体实
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



