一些基本概念的表述:
算法:算法是指解决特定问题求解步骤的描述,在计算机中表现为指令有限序列,并且每条指令表述一个或者多个操作。
算法的基本特征:输入、输出、有穷性、确定性和可行性
输入:算法有零个或者多个输入
输出:算法具有一个都多个输出,输出表现形式为打印输出或者返回一个或者多个值
有穷性:算法在执行有限的步骤之后,自动结束而不出现无限循环,并且每一步在可接受的时间范围内
确定性:算法的每一步都具有确定的含义,不会出现二义性
可行性:算法的每一步必须是可行的,每一步能够通过执行有限次数完成。
算法设计的要求:正确性、可读性、健壮性、时间效率高和存储量低
正确性:算法至少应该具有输入、输出和加工处理无歧义性、能正确反映问题的需求、能够找到问题的正确答案
可读性:算法设计的另一目的是为了便于阅读、理解和交流
健壮性:输入不合法时也能做出相应的处理,而不是产生异常或者莫名奇妙的结果
时间效率高和存储量低:
算法效率的度量方法:事后统计方法和事前分析估计方法
算法复杂度:语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法的时间复杂度,也就是算法的时间度量,记作:T(n)=O(f(n))。这样称之为大O记法。常见的有O(1)叫常数阶、O(n)叫线性阶、O(n²)叫平方阶。
常见时间复杂度消耗时间:
常数阶 O(1) < 对数阶O(log2n)<线性阶 O(n) < 线性对数阶O(nlog2n) < 平方阶 O(n2) < 立方阶 O(n3) < … < k次方阶 O(nk) < 指数阶O(2n)