時間複雜度是描述演算法效率的一種量度,記作:
f(n)是正整數n的乙個函式,n可以理解為問題的規模,隨著問題規模的增大,演算法執行時間的增長率和f(n)的增長率相同,稱作演算法的時間複雜度。另外我們還要了解頻度的概念,頻度指的是該語句重複執行的次數。我們用基本操作:「x增1」來舉例。
1.//++x與x++都表示x增1,但++x是先自增1再計算x的值,x++是先計算x的值再增1
此處x增1重複執行了一次,時間複雜度為o(1)
2.for(i=1;i<=n;++i)
此處因為有迴圈,迴圈一次執行一次,時間複雜度為o(n)
3.此處是雙層迴圈,外層迴圈一次,內層迴圈n次,時間複雜度為o(n^2)
for(j=1;j<=n;++j)
}
了解到了時間複雜度,我們看看時間複雜度的比較:
就跟高中數學裡函式一樣,時間複雜度遵循函式增長規律,增長越快的重複次數越多,頻度越高越複雜。因此在程式較為複雜難以求出準確迴圈次數時,我們就考慮他的問題規模增長率。
2n>1/2n3>5n^2>100n>200log2n,常數忽略不計,增長率就按這個記。
辨認的簡單辦法:
1.簡單但不一定準確的確認方法,就是看看有幾層迴圈,複雜度就是n的幾次方,假如有m層迴圈,複雜度就是n^m.
2.如果乙個演算法裡有多個部分,每個部分時間複雜度不一樣,那麼取最其中最大的時間複雜度。
3.對於條件判斷語句,同樣取其中時間複雜度最大的路徑作為總的時間複雜度。
了解時間複雜度和空間複雜度
時間複雜度和空間複雜度是用來評價演算法效率高低的2個標準.時間複雜度 就是說執行演算法需要消耗的時間長短,越快越好。關注基本操作的執行次數 空間複雜度 就是說執行當前演算法需要消耗的儲存空間大小,也是越少越好。我們一般用 大o符號表示法 來表示時間複雜度 大o表示法 1.最高次項有係數,則忽略係數 ...
dfs時間複雜度 時間複雜度 空間複雜度
時間複雜度的數學證明方法相對比較複雜,通常在工程實際中,會分析就好。注意 只看最高複雜度的運算 int for for for for int遞迴如何分析時間複雜度?常數係數可以忽略,在分析時不用考慮,只要說以上術語即可。主定理 master throrem 上述第四種是歸併排序,所有排序演算法,最...
時間複雜度 空間複雜度
時間複雜度 在電腦科學中,演算法的時間複雜度是乙個函式,它定性描述了該演算法的執行時間。這是乙個關於代表演算法輸入值的字串 的長度的函式。時間複雜度常用大o符號 表述,不包括這個函式的低階項和首項係數。計算時間複雜度的方法 1 只保留高階項,低階項直接丟棄 2 係數不要 3 執行次數是常數是為o 1...