1、演算法效率
演算法效率分析分為兩種:第一種是時間效率,第二種是空間效率。時間效率被稱為時間複雜度,而空間效率被稱作空間複雜度。 時間複雜度主要衡量的是乙個演算法的執行速度,而空間複雜度主要衡量乙個演算法所需要的額外空間。
2、時間複雜度
演算法中的基本操作的執行次數,為複雜的時間複雜度。
大o漸進表示法
例如:
func1執行的基本操作次數f(n)=n^2+2*n+10void
func1
(int n)
}for
(int k =
0; k <
2* n ; k++
)int m =10;
while
((m--
)>0)
system.out.
println
(count)
;}
在實際的計算當中,我們不需要計算精確的執行順序,只需要大概執行順序,就用到了大o漸進表示法。
大o符號:是用於描述函式漸進行為的數學符號。
推導大o階方法:
(1)用常數1取代執行時間中的所有加法常數。
(2)在修改後的執行次數函式中,只保留最高端項。
(3)如果最高端項存在且不是1,則去除與這個專案相乘的常數。最終得到結果
使用了大o漸進表示法之後,func1的時間複雜度為o(n^2)。
時間複雜度見到的最多的有o(n),o(log2n),o(n^2)
3、空間複雜度
空間複雜度是對乙個演算法在執行過程中臨時占用儲存空間大小的量度。以空間複雜度算的是變數的個數。空間複雜度計算規則基本和時間複雜度類似,也使用大o漸進表示法。只是計算的不是執行次數,而是在執行過程中臨時變數被運用次數。
演算法複雜度 時間複雜度和空間複雜度
1 時間複雜度 1 時間頻度 乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道哪個演算法花費的時間多,哪個演算法花費的時間少就可以了。並且乙個演算法花費的時間與演算法中語句的執行次數成正比例,哪個演算法中語句執行次數...
演算法複雜度 時間複雜度和空間複雜度
演算法複雜度 時間複雜度和空間複雜度 關鍵字 演算法複雜度 時間複雜度 空間複雜度 1 時間複雜度 1 時間頻度 乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道哪個演算法花費的時 間多,哪個演算法花費的時間少就可以...
演算法複雜度 時間複雜度和空間複雜度
演算法的時間複雜度是指執行演算法所需要的計算工作量。n稱為問題的規模,當n不斷變化時,時間頻度t n 也會不斷變化。但有時我們想知道它變化時呈現什麼規律。為此,我們引入時間複雜度概念。一般情況下,演算法中基本操作重複執行的次數是問題規模n的某個函式,用t n 表示,若有某個輔助函式f n 存在乙個正...