渐进式复杂度分析-学习笔记
漸進式復雜度分析
- 概念
- 目的
- 大O表示法
- 復雜度分析方法
- 常用復雜度級別
- 復雜度分析的4個概念
概念
復雜度描述的是算法執行時間(或占用空間)與數據規模的增長關系,描述了當數據量趨近于無窮大的時候,算法的執行時間或數據占用空間,因此常量級(不隨數據的增長而增長)的執行時間是忽略的。
目的
和性能測試相比,復雜度分析有不依賴執行環境、成本低、效率高、易操作、指導性強的特點。但是具體問題不一定符合負責度分析的結構,所以特殊情況還是需要做性能測試。
大O表示法
為了方便計算,我們把每行代碼執行一次的時間都看做相等的,因此只要計算該算法一共執行了幾次代碼行就能得出時間復雜度。算法的執行時間與每行代碼的執行次數成正比,用T(n) = O(f(n))表示,其中T(n)表示算法執行總時間,f(n)表示每行代碼執行總次數,而n往往表示數據的規模。該方法把算法所需要的時間,空間簡單量化了,表達式一目了然,非常清晰。
復雜度分析方法
以時間復雜度為例,由于時間復雜度描述的是算法執行時間與數據規模的增長變化趨勢,所以常量階、低階以及系數實際上對這種增長趨勢不產決定性影響,所以在做時間復雜度分析時忽略這些項。以下為常用方法:
常用復雜度級別
-
多項式階:
隨著數據規模的增長,算法的執行時間和空間占用,按照多項式的比例增長。以下復雜度按照從低到高進行排序:
O(1)(常數階)、O(logn)(對數階)、O(n)(線性階)、O(nlogn)(線性對數階)、O(n2)(平方階)、O(n3)(立方階) -
非多項式階:
隨著數據規模的增長,算法的執行時間和空間占用暴增,這類算法性能極差。包括:
O(2^n)(指數階)、O(n!)(階乘階)
復雜度分析的4個概念
總結
以上是生活随笔為你收集整理的渐进式复杂度分析-学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 读《VBScript程序员参考手册》,做
- 下一篇: 高等代数第3版下 [丘维声 著] 201