演算法執行時間、logN、NlogN 之間的比較
http://clarkluo2004.blog.163.com/blog/static/32973801200845115213422/
這個帖子說的非常好啊
1 | 大部分程式的大部分指令之執行一次,或者最多幾次。如果一個程式的所有指令都具有這樣的性質,我們說這個程式的執行時間是常數。 |
logN | 如果一個程式的執行時間是對數級的,則隨著N的增大程式會漸漸慢下來,如果一個程式將一個大的問題分解成一系列更小的問題,每一步都將問題的規 模縮減成幾分之一 ,一般就會出現這樣的執行時間函式。在我們所關心的範圍內,可以認為執行時間小於一個大的常數。對數的基數會影響這個常數,但改變不會太 大:當N=1000時,如果基數是10,logN等於3;如果基數是2,logN約等於10.當N=1 00 000,logN只是前值的兩倍。當N時原來的兩倍,logN只增長了一個常數因子:僅當從N增長到N平方時,logN才會增長到原來的兩倍。 |
N | 如果程式的執行時間的線性的,很可能是這樣的情況:對每個輸入的元素都做了少量的處理。當N=1 000 000時,執行時間大概也就是這個數值;當N增長到原來的兩倍時,執行時間大概也增長到原來的兩倍。如果一個演算法必須處理N個輸入(或者產生N個輸出), 那麼這種情況是最優的。 |
NlogN | 如果某個演算法將問題分解成更小的子問題,獨立地解決各個子問題,最後將結果綜合起來 ,執行時間一般就是NlogN。我們找不到一個更好的形容, 就暫且將這樣的演算法執行時間叫做NlogN。當N=1 000 000時,NlogN大約是20 000 000。當N增長到原來的兩倍,執行時間超過原來的兩倍,但超過不是太多。 |
N平方 |
如果一個演算法的執行時間是二次的(quadratic),那麼它一般只能用於一些規模較小的問題。這樣的執行時間通常存在於需要處理每一對輸入 資料項的演算法(在程式中很可能表現為一個巢狀迴圈)中,當N=1000時,執行時間是1 000 000;如果N增長到原來的兩倍,則執行時間將增長到原來的四倍。 |
N三次方 | 類似的,如果一個演算法需要處理輸入資料想的三元組(很可能表現為三重巢狀迴圈),其執行時間一般就是三次的,只能用於一些規模較小的問題。當N=100時,執行時間就是1 000 000;如果N增長到原來的兩倍,執行時間將會增長到原來的八倍。 |
2的N次方 | 如果一個演算法的執行時間是指數級的(exponential),一般它很難在實踐中使用,即使這樣的演算法通常是對問題的直接求解。當N=20時,執行時間是1 000 000;如果增長到原來的兩倍時,執行時間將是原時間的平方! |
log log N 可以看作是一個常數:即使N很多,兩次去對數之後也會變得很小
轉載: http://blog.csdn.net/richardysteven/article/details/5872672
相關文章
- lr計算程式執行消耗時間的比較:
- job 執行時間比排程間隔時間長
- kill執行時間較長的會話會話
- JavaScript 比較時間大小JavaScript
- java計算時間差及比較時間Java
- jquery比較時間 的時分秒大小jQuery
- 時間複雜度為O(nlogn)的排序演算法時間複雜度排序演算法
- 時間複雜度為 O(nlogn) 的排序演算法時間複雜度排序演算法
- 直播軟體搭建,當前時間、既定時間後的時間及時間比較大小
- java計算時間差及比較時間大小Java
- JavaScript比較兩個時間JavaScript
- JavaScript比較時間日期大小JavaScript
- Java物件之間的比較之equals和==Java物件
- 演算法中的O(1), O(n),O(logn), O(nlogn)演算法
- 【IOS】java 與oc之間的比較iOSJava
- JavaScript比較兩個時間大小JavaScript
- C sharp 比較時間大小C Sharp
- mysql 執行一段時間比較慢問題處理經過MySql
- javascript比較兩個時間日期的大小JavaScript
- 在java中進行日期時間比較的4種方法Java
- 大表建索引,rman備份等耗費的時間通常比較長?還有多長時間才能執行完?索引
- Java,Go和Rust之間的比較 - DexterJavaGoRust
- abap執行時間
- python之為函式執行設定超時時間(允許函式執行的最大時間)Python函式
- 如何使用Docker構建執行時間較長的指令碼Docker指令碼
- 【演算法】6 比較排序之外學習新的線性時間排序演算法排序
- js中各個型別之間的比較JS型別
- Ruby程式語言與Ruby之間的比較
- 進化演算法、遺傳演算法與粒子群演算法之間的比較演算法
- 直播平臺開發,純時間比較(時分),不含日期,js前端比較JS前端
- 各種時間型別的轉換及比較型別
- 關於時間跨度比較的OVERLAPS函式函式
- sleep 時間段不佔指令碼執行時間指令碼
- 程式執行時間的測量
- 執行crontab最好的時間(轉)
- php擷取小時和分鐘,在進行和其它時間段的比較PHP
- Tweetolife:Twitter上的性別和時間比較分析
- Linux 檢視程式啟動時間、執行時間Linux