1.引言
2.演算法優劣分析
3.時間複雜度度量方法
4.常見的演算法時間複雜度
5.求解時間複雜度的步驟
6.空間複雜度
1.引言
最近沒有寫部落格,一半是比較忙,較大的一半因素是變懶了,日復一日,我覺得有必要重拾起來,堅持一下,為下乙個目標做些事情。
2.演算法優劣分析
兩個方面
2.1 從數學上證明演算法的正確性,即 能夠得到正確的結果
2.2 分析演算法的時間複雜度, 即程式執行時間隨著輸入規模的增長而增長的量級
3.時間複雜度度量方法
3.1 事後統計方法
弊端:效能評測,需要根據演算法編寫程式並實際執行;
易受計算機硬體,軟體的影響,忽略演算法本身的優勢
3.2 事前分析估算方法
乙個高階語言編寫的程式在計算機上執行消耗的時間取決於下列因素:
演算法採用的策略和方法
編譯產生的**質量
問題的輸入規模
機器執行指令的速度
乙個演算法是由控制結構(順序,分支和迴圈3種)和原操作(指固有資料型別的操作)組成的,則演算法的時間取決與兩者的總和。
通常的做法,從演算法中選取一種對於所研究的問題來說是基本操作的原操作,以該基本操作的重複執行次數作為演算法的時間量度。
3.2.1 時間頻度
乙個演算法花費的時間與演算法中語句的執行次數成正比例。乙個演算法中語句的執行次數,稱為語句頻度或者時間頻度。記為t(n)
3.2.2 時間複雜度
在時間頻度中,n稱為問題的規模,當n不斷變化時,t(n)也會不斷變化,但我們想知道變化的規律,由此引入時間複雜度的概念。
一般情況下,演算法基本操作重複執行的次數是問題規模n的某個函式,用t(n)表示,若有某個輔助函式f(n),使得n趨近於無窮大時,t(n)/ f(n)的極限值為不等於零的常數,則稱f(n)是t(n)的同數量級函式。記做 t(n)=o(f(n)),稱o(f(n))為演算法的漸進時間複雜度,簡稱時間複雜度。
4.常見的演算法時間複雜度
常見的演算法時間複雜度由小到大依次為:ο(1)<ο(log2n)<ο(n)<ο(nlog2n)<ο(n
2)<ο(n
3)<…<ο(2
n)<ο(n!)
5.求解時間複雜度的步驟
5.1 找出演算法中的基本語句
5.2 計算基本語句的執行次數的數量級
5.3用大o記號表示演算法的時間效能
6.空間複雜度
指乙個演算法在計算機上所消耗的儲存空間,包含三個方面
6.1 演算法本身所占用的儲存空間
6.2 演算法的輸入輸出所占用的儲存空間
6.3 演算法在執行過程中臨時占用的儲存空間
演算法複雜度 時間複雜度和空間複雜度
1 時間複雜度 1 時間頻度 乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道哪個演算法花費的時間多,哪個演算法花費的時間少就可以了。並且乙個演算法花費的時間與演算法中語句的執行次數成正比例,哪個演算法中語句執行次數...
演算法複雜度 時間複雜度和空間複雜度
演算法複雜度 時間複雜度和空間複雜度 關鍵字 演算法複雜度 時間複雜度 空間複雜度 1 時間複雜度 1 時間頻度 乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道哪個演算法花費的時 間多,哪個演算法花費的時間少就可以...
演算法複雜度 時間複雜度和空間複雜度
演算法的時間複雜度是指執行演算法所需要的計算工作量。n稱為問題的規模,當n不斷變化時,時間頻度t n 也會不斷變化。但有時我們想知道它變化時呈現什麼規律。為此,我們引入時間複雜度概念。一般情況下,演算法中基本操作重複執行的次數是問題規模n的某個函式,用t n 表示,若有某個輔助函式f n 存在乙個正...