基本概念
算法判别指标
空间复杂度 空间复杂度S(n) —— 根据算法写成的程序在执行时 根据算法写成的程序在执行时
占用存储单元的长度。这个长度往往与输入数据的
规模有关。空间复杂度过高的算法可能导致使用的
内存超限,造成程序非正常中断。
时间复杂度 时间复杂度T(n) —— 根据算法写成的程序在执行时 根据算法写成的程序在执行时
耗费时间的长度。这个长度往往也与输入数据的规
模有关。时间复杂度过高的低效算法可能导致我们
在有生之年都等不到运行结果。
最坏情况复杂度 T worst ( n )
平均复杂度 T avg ( n )
复杂度的渐进表示法
复杂度上界:T(n) = O(f(n))
复杂度下界: T(n) = Ω(g(n))
复杂度上界和下界都是这个: T(n) = Θ(h(n))
小窍门
若两段算法分别有复杂度T 1 (n) = O(f 1 (n)) 和T 2 (n) =
O(f 2 (n)) ,则T 1 (n) + T 2 (n) = max( O(f 1 (n)), O(f 2 (n)) )
T 1 (n)*T 2 (n) = O( f 1 (n) f 2 (n) )
若T(n) 是关于n 的k 阶多项式,那么T(n)= Θ(n k )
一个for循环的时间复杂度等于循环次数乘以循环体
代码的复杂度
循环的时间复杂度等于循环次数乘以循环体
代码的复杂度
if-else 结构的复杂度取决于if的条件判断复杂度
和两个分枝部分的复杂度,总体复杂度取三者中最大
分而治之
将一个大问题化成几个小问题去处理
在线处理
“ 在线”的意思是指每输入一个数据就进行 的意思是指每输入一个数据就进行 即时处理,在任
何一个地方中止输入,算法都能正确给出当前的解。