數據結構_____算法時間複雜度概念


時間複雜度:定義

在進行算法算法分析時,語句總是執行次數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++)

    {

    }

}



還有其他的階 到此 介紹這些吧








發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章