1.1复杂度度量
1.渐进复杂度
1.大 O O O记号-渐进上界
当n足够大之后
若存在正常数c和函数f(n),使得对任意任意 n >> 2(远远大于2),都有
T(n)<=c*f(n);
则可以认为n在足够大之后,f(n)给出了T(n)增长速度的一个渐进上界。此时,记之为T(n)=O(f(n))
由这一定义,可以导出大 O O O记号的一下性质:
- 对于任意常数c>0 ,有O(f(n))=O(c*F(n))
- 对于任意常数a>b>0, 有O( n a n^a na+ n b n^b nb)=O( n a n^a na)
实例,起泡排序的复杂度分析
bubbleSort(起泡排序),T(n)=O(2 ( n − 1 ) 2 (n-1)^2 (n−1)2)=O(2 n 2 n^2 n2-4n+2)=O(2 n 2 n^2 n2)=O( n 2 n^2 n2)
2.大 Ω \Omega Ω记号-渐进下界
若存在正常数c和函数g(n),使得对任意任意 n >> 2(远远大于2),都有
T(n)>=c*g(n);
就可以认为,在n足够大之后,g(n)给出了T(n) 的一个渐进下界。此时,我们将其记为
T(n)= Ω \Omega Ω(g(n));
3.大 θ \theta θ记号-对算法复杂度的准确估计
若存在正常数c1<c2和函数h(n),使得对任意任意 n >> 2(远远大于2),都有
c1*h(n)<=T(n)<=c2*h(n)
就可以认为,在n足够大之后,h(n)给出了T(n) 的一个确界。此时,我们将其记为
T(n)= θ \theta θ(h(n));
2.时间复杂度
一般使用渐进复杂度度量
3.空间复杂度
一般使用渐进复杂度度量