程序時間複雜度的幾種表示

看《數據結構、算法與應用: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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章