算法分析
Posted xxMYxx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法分析相关的知识,希望对你有一定的参考价值。
第二章 算法分析
算法是为求解一个问题需要遵循的,被清楚的指出的简单指令集合
本章将讨论
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 运行时间中的对数
对数长=常出现的规律可概括为下列一般法则
如果一个算法用常数时间(O(1))将问题的大小削减为其一半,那么该算法就是O(log 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 分析结果的准确性
根据经验,有时分析会估计过大,如果出现这种情况需要进一步细化分析,或者可能是平均运行时间显著小于最坏运行时间,不可能对所得到的界在进行改进,最坏的情形尽管过分悲观,但是却是最好的已知解析结果
以上是关于算法分析的主要内容,如果未能解决你的问题,请参考以下文章