第二章 算法分析

第二章 算法分析

算法是为求解一个问题需要遵循的,被清楚的指出的简单指令集合

本章将讨论

1.如何估计一个程序所需要的时间

2.如何将一个程序的运行时间从天降到秒甚至更少

3.粗心使用递归的后果

4.将一个数自乘得到其幕,以及计算两个数的最大公因数的非常有效的算法

2.3 要分析的问题

通常,要分析的最重要的资源就是运行时间

影响程序运行时间的因素有

1. 编译器和计算机

2. 主要因素则是使用的算法以及对算法的输入

输入大小是主要考虑的方法(最坏情况运行时间和平均情况运行时间)偶尔考虑最好情况的运行时间

 

2.4 运行时间计算

2.4.2 一般法则

法则1  for循环  运行时间至多为  内部的语句(包括测试)的运行时间乘以迭代次数

 

法则2 嵌套for循环 运行时间为 该语句的运行时间乘以该组的所有for循环的发小的乘积

 

法则3 顺序语句  将各个语句的运行时间求和即可,

 

法则4  if/ else  从不超过判断的运行时间在加上语句中运行时间长者的总的运行时间

 

递归运行的时间是以指数式增长的

 

递归的四条基本准则

1. 基准情景 必须要有一些基准情况,它无需使用递归就能解出来

2. 不断推进 对于那些需要使用递归求解的情景,每一次递归都必须要使状况朝向一种基准情景推进

3. 设计法则 假设所有递归都能使用

4. 合成效益法则 在求解一个问题的同一个实例时,切勿在不同的递归中调用中做重复性的工作

2.4.3 最大子系列和问题求解

在任意时刻,算法都能对它已经读入的数据给出子系列问题的正确答案,具有这种的算法叫做联机算法

 

2.4.4 运行时间中的对数

对数长=常出现的规律可概括为下列一般法则

如果一个算法用常数时间(O1))将问题的大小削减为其一半,那么该算法就是Olog N)另一方面如果使用常数时间只把问题减少一个常数的数量,那么这种算法就是O(N)

 

折半查找:(二分法)给定一个X和整数A1 A2 A3 A4 ....后者已经预先排序并在内存中,求下标i使得Ai=X 如果X不在数据中返回 i = -1

折半查找 它提供了O(log N)的时间复杂度,适用于数据稳定的应用中,此时输出数据需要一次排序操作

 

欧几里得算法

如果M > N ,M mod N < m/2

 

幂运算

如果N是偶数  有  Xn  = Xn/2 * Xn/2 

如果N是奇数  有  Xn = X (n-1)/2  * X (n-1)/2  * X

 

2.4.5 分析结果的准确性

根据经验,有时分析会估计过大,如果出现这种情况需要进一步细化分析,或者可能是平均运行时间显著小于最坏运行时间,不可能对所得到的界在进行改进,最坏的情形尽管过分悲观,但是却是最好的已知解析结果

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《知到app算法设计与分析》是一本讲述算法设计与分析的教材。通过阅读这本教材,我们可以了解到算法设计的基本概念、算法的分类、算法分析的方法以及常见的数据结构和算法问题。 在第二章中,主要介绍了算法的基本概念和算法分析的方法。首先,算法的定义是一组完成特定任务的有限步骤集合。算法要具备以下特点:明确性、有限性、确定性和有效性。然后,根据算法的执行顺序,可以将算法分为序列、选择和循环结构。序列结构是指算法按照一定顺序执行,选择结构是根据条件选择执行不同的代码块,循环结构是重复执行某段代码。 接下来,教材介绍了算法分析的方法。算法分析主要用于评估和比较不同算法的性能。常见的算法分析方法包括时间复杂度和空间复杂度。时间复杂度表示算法执行所需的时间,可以通过估计算法中基本操作的执行次数来进行评估。空间复杂度表示算法执行所需的额外存储空间,也可以通过估计变量和数据结构的存储量来进行评估。我们通常关注算法的最坏情况时间复杂度,即算法在最差情况下执行所需的时间。 此外,第二章还介绍了算法思维和算法设计的一些基本原则。算法思维是指通过分析问题、抽象问题和抽象解决方法来解决问题的能力。而算法设计的基本原则包括自顶向下的设计、递归和迭代的设计、模块化设计和算法的优化等。 总之,第二章主要介绍了算法的基本概念、算法分析的方法以及算法设计的一些基本原则。通过阅读和理解这些内容,我们可以更好地了解和应用算法设计与分析的知识。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值