時間複雜度:定義
在進行算法算法分析時,語句總是執行次數T(n) 是關於問題規模n的函數,進而分析T(n)隨n變化情況並確定T(n) 的數量級。算法時間複雜度,也就是算法的時間度量,記作:T(n) = O(f(n))。 它隨着問題規模n的增大。算法的執行時間增長率和f(n) 的增長率相同,稱作算法的漸進時間複雜度,簡稱爲時間複雜度。其中f(n) 是問題規模n的某個函數 採用O[ ] 來體現算法時間複雜度 簡稱 大O記法
推導方法
1.用常數1取代所有運行時間中加法常數 n+1+2 = O(1)
2.在修改後的運行次數函數,只保留最高階項 n²+n^3 =O( n^3)
3.如果最高階項存在且不是1,去除掉 與這個項相乘的函數 2*n² = O(n²)
常數階 O(1)
int i=0,j=100 ; //執行一次
i = (1+j)*n/2 //執行一次
線性階 O(n)
for (int i = 0;i<n;i++)
{
//執行n次
}
對數階 O(logn) [2^x = n , x = log2n]
int count = 0;
while (count<n)
{
//執行了log2n次
count = count*2;
}
平方階 O(n²) 【如果循環次數的一個改成m 那麼就是 O(m*n)】
//執行了n²次
for (int i=0;i<n;i++)
{
for (int j=0;j<n;j++)
{
}
}
還有其他的階 到此 介紹這些吧