算法分析基础
【算法分析的定义】
算法分析是对一个算法需要多少计算时间和存储空间作定量的分析。
【表示时间复杂度的符号】
(1)Θ(西塔):紧确界。 相当于"="
(2)O (大欧):上界。 相当于"<="
(3)o(小欧):非紧的上界。 相当于"<"
(4)Ω(大欧米伽):下界。 相当于">="
(5)ω(小欧米伽):非紧的下界。 相当于">"
【主方法求解递归】
主方法为如下形式的递归提供了一种“菜谱”式的求解方法
T(n) = aT(n/b) + f(n)
其中a≥1和b>1是常数,f(n)是渐近函数。
上述递归式描述的是这样一种算法的运行时间:
它将规模为n的问题分解为a个子问题,每个子问题规模为n/b,其中a和b都是正常数。
a个子问题递归地进行求解,每个花费时间T(n/b)。
函数f(n)包含了问题分解和子问题解合并的代价。
其中n/b指n/b的上取整或者是下取整,对结果不会造成影响。
【主定理】
【反例】
例: T(n) = 2T(n/2) + nlgn