看《数据结构、算法与应用:C++语言描述》中讲到程序性能的时候涉及到了空间复杂度与时间复杂度。其中时间复杂度有多种表示:O、Ω、Θ、o,然后然后就蒙圈了,虽然书上讲的也比较详细但还是不够直接。
这样表示
时间复杂度
O:big-O————上界
Ω:big-Omega—–下界(很少用)
Θ:big-Theta——-确界
F(n) = Θ(n^2)的时候,意思是说“F(n)在渐进情况下不仅不会比n^2增长快,而且也不会比n^2增长慢”。
大家都习惯用大O呢,因为正常人在使用算法的时候不会考虑下界Ω的。另外,并不是所有算法都能轻松证明复杂度下界的。
知乎:
为什么见周围人描述算法复杂度都用大 O 符号而不是大 Θ?
https://www.zhihu.com/question/20677334
贴几张CSDN中容易理解的图片予以区别:
相关阅读:
几种排序以及其时间复杂度
http://blog.csdn.net/huoyunshen88/article/details/8063569
排序 | 类别 | 时间复杂度 | 空间复杂度 | 稳定与否 |
---|
注意:这个表头错位了,第一栏为排序,第二栏为类别,第三栏为时间复杂度…
快速排序的时间复杂度的下界,平均,上界分别是Θn), Θ(n log n)和Θ(n^2)
快速求中位数的下界,平均,上界分别是Θ(n), Θ(n)和Θ(n^2)。
前三张图片摘自:
http://blog.csdn.net/xky1306102chenhong/article/details/49766811