复杂度的渐进表示法(时间复杂度)
生活随笔
收集整理的這篇文章主要介紹了
复杂度的渐进表示法(时间复杂度)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
簡(jiǎn)單來(lái)說(shuō) O(f(n))就表示f(n)是T(n)的某種上界 對(duì)于充分大的n而言
那么類(lèi)似 g(n)是T(n)的某種下界
我們分析算法效率的時(shí)候 總歸是希望不管是上屆還是下屆 都盡可能跟它的真實(shí)情況貼的越近越好 所以我們一般取得是我們能找到的最小上界或者最大下界
我們知道log n 是最好的函數(shù),log n是漲的最慢的。作為一個(gè)程序員,在設(shè)計(jì)算法時(shí),每當(dāng)看到一個(gè)算法的復(fù)雜度是n2,一個(gè)下意識(shí)本能反應(yīng),我有沒(méi)有辦法 把它降成nlog n。如果你能降成nlog n,那個(gè)效率的提高是非常非常明顯的
比如說(shuō)有兩段算法 我們知道他們復(fù)雜度的上界是什么 那么把兩段算法拼在一起時(shí) 總時(shí)間就是兩段的和 他們的上界就是兩個(gè)上界之間最大的那個(gè)。當(dāng)把兩個(gè)算法嵌套起來(lái)要相乘的時(shí)候,他們的上界就是他們上界的乘積
小測(cè)驗(yàn): 下面一段代碼的時(shí)間復(fù)雜度是?
if ( A > B ) { for ( i=0; i<N; i++ )for ( j=N*N; j>i; j-- )A += B; }else { for ( i=0; i<N*2; i++ )for ( j=N*2; j>i; j-- ) A += B; }總結(jié)
以上是生活随笔為你收集整理的复杂度的渐进表示法(时间复杂度)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 关于使用Vivado在仿真时报错的问题
- 下一篇: 解决 The resulting par