算法数据结构学习
一 数学基础
我们需要建立函数之间的一种 相对的级别,衡量两个函数的 相对增长率(relative rate of growth)
1、如果存在正常数 c 和 n0 使得当 N≥n0 时,T(N)≤cf(N) ,记为 T(N)=O(f(N)。
2、如果存在正常数 c 和 n0 使得当 N≤n0 时,T(N)≥cg(N) ,记为 T(N)=Ω(g(N))。
3、T(N)=Θ(h(N)) 当且仅当 T(N)=O(h(N)) 且 T(N)=Ω(h(N))。
也可以理解成,当 T(N)=O(f(N)) 时,f(N) 是 T(N) 的一个上界。反之,当 T(N)=Ω(g(N)) 时,g(N) 是 T(N) 的一个下界。
Tips:不要将常数或者低阶项在入 O(f(N)) 中;我们可以取极限(limN→∞)来确定两个函数的相对增长率(可能需要用到洛必达)
在算法衡量中,我们关注的是时间,但是我们并不能直接拿时间作为衡量,因为跑程序的计算机算力之间也有差距,我们通常看算法的 步骤