算法设计与分析——概念

算法特性

有穷性(finite):算法的执行次数有穷,即它包含的计算步骤有穷。
确定性(definite):每条指令都是明确的、无二义的 
可行性(effective):每条指令都必须是能够执行的 
输入(input):允许有0个或多个输入,取自特定的集合 
输出(output):产生一个或多个输出, 与输入量有特定的关系

计算过程与算法的区别在于,计算过程不具有穷性,是个死循环。
程序=数据结构+算法

算法目标

正确性:首要因素
可读性
健壮性:当输入不正确时,可以应对处理
高效、低存储

时间复杂度T(n)

算法的时间复杂度由算法中的基本操作的执行次数来度量其大小。

  • 时间复杂度T(n)=问题规模的某个函数f(n)

时间复杂度不仅依赖于问题的规模n,也取决于输入数据的特性(如,元素的初始状态)

  1. 平均情况下的时间复杂度 A(n):规模为n的所有输入的算法时间复杂度的 平均值

  2. 最坏情况下的时间复杂度 W(n):在问题规模同为n时,基本运算执行次数为最多的时间复杂度

算法的渐进性态分析

渐进时间复杂度:当问题的规模趋于无限大时的时间复杂度

  1. T(n)=O(f(n)) ——大O表示法
    当n的规模趋于无穷,ヨc > 0,总有 T(n)≤c*f(n) 。
    此时,T(n)的阶低于或等于f(n)的阶。即T(n)的增长速度小于或等于f(n)。
    可知T(n)的上界
  2. T(n)=Ω(f(n)) ——大Ω表示法
    当n的规模趋于无穷,ヨc > 0,总有 T(n)≥c*f(n) 。
    此时,T(n)的阶高于或等于f(n)的阶。即T(n)的增长速度大于或等于f(n)。
    可知T(n)的下界
  3. T(n)=Θ(f(n))——Θ表示法
    当n的规模趋于无穷,T(n)=O(f(n))且 T(n)=Ω(f(n)) 。
    此时,T(n)的阶与f(n)的同阶。即T(n)的增长速度与f(n)近似相等。 可知T(n)的确界

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/karin_0/article/details/82983804