时间复杂度和空间复杂度
- 空间复杂度S(n)——根据算法写成的程序在执行时占用存储单元的长度。这个长度往往与输入数据的规模有关。空间复杂度过高的算法可能导致使用的内存超限,造成程序非正常中断。
- 时间复杂度T(n)——根据算法写成的程序在执行时耗费时间的长度。这个长度往往也与输入数据的规模有关。时间复杂度过高的低效算法可能导致我们在有生之年都得不到运行结果。
什么是好的算法
在分析一般算法的效率时,我们经常关注下面两种复杂度:
- 最坏情况复杂度Tworst(n)
- 平均复杂度Tavg(n)
Tavg(n) <= Tworst(n)
复杂度的渐进表示法
- T(n)=O(f(n))表示存在常数C>0,n0>0,使得当n>=n0时有T(n)<=C•f(n)
- T(n)=Ω(g(n))表示存在常数C>0,n0>0,使得当n>=n0时有T(n)>=C•g(n)
- T(n)=θ(h(n))表示同时有T(n)=O(h(n))和T(n)=Ω(h(n))