一.算法
定义:通常把基于存储结构得运算实现的步骤或过程称为算法。
五个特性:(1)有穷性;
(2)确定性;
(3)可行性;
(4)有输入;
(5)有输出;
好算法应具备:(1)正确性;
(2)可读性;
(3)健壮性;
(4)通用性;
(5)效率与存储量需求;
二.算法描述
输入→算法→输出
返回值 算法对应的函数名(形参列表)
{ //临时变量的定义
//实现由输入参数的操作
......
}
返回值:通常为bool类型,表示算法是否成功执行。
形参列表:由输入型参数和输出型参数构成。
三.算法分析基础
1.算法时间复杂度分析
①分析算法的执行时间
Ⅰ.求出算法所有原操作的执行次数(也称为频度),它是问题规模n的函数,用T(n)表示。
Ⅱ.算法执行时间大致=原操作所需的时间×T(n)。
Ⅲ.比较不同算法的T(n)大小得出算法执行时间的好坏。
②算法的执行时间用时间复杂度来表示
T(n)=O(f(n))
时间复杂度比较关系:O(1)<O(log2n)<O(n)<O(nlog2n)<O(n²)<O(n³)<O(2^n)<O(n!)
2.算法空间复杂度分析
时间复杂度:用于量度一个算法在运行过程中临时占用的存储空间的大小。
S(n)=O(g(n))
3.其他情况的算法分析
①最好、最坏和平均时间复杂度分析
定义:设一个算法的输入规模为n,Dn是所有输入的集合,任一输入I∈Dn,P(I)是I出现的概率,有ΣP(I)×T(I) (I∈Dn)
算法的最坏时间复杂度为:W(n)=MAX{T(I)}
算法的最好时间复杂度为:B(n)=MIN{T(I)}