本文主要书写了本人对于算法复杂度的一些理解,并辅以一些例子进行说明
算法复杂度的概念
复杂度的计算理念
- 我们不对某个算法进行精确的分析,只需要初略地知道它的增长趋势就可以了。
- 平常我们分析算法复杂度的时候,通常有分析最坏情况和平均情况两种选项,由于最坏情况易于分析,所以我们一般分析算法复杂度的最坏情况。
复杂度的渐进表示法
- 上界
T(n)=O(f(n))
上述式子表示当N足够大的时候,f(n)
函数是T(n)
的上界。
- 下界
T(n)=Ω(h(n))
上述式子表示当N足够大的时候,h(n)
函数是T(n)
的下界。
- 上界和下界同时成立
T(n)=Θ(g(n))
上述式子表示当N足够大的时候,g(n)
函数同时是T(n)
的上界和下界。
- 在上面三个式子中,
T(n)
表示的都是某个算法的时间复杂度,它们也可以应用在算法的空间复杂度S(n)
上。 - 一个算法的上界和下界函数可能有无穷多个,为了和现实的情况更贴合,我们在使用上述式子表示算法的复杂度的时候,通常使用最小的上界和最大的下界。
复杂度的增长趋势比较
logN<n<nlogN<n2<n3<...<O(