數據結構之時間復雜度 C語言


算法的時間復雜度:用O()表示,執行次數=時間,隨着輸入規模n增大,T(n)增長最慢的算法為最優算法。
如何計算時間復雜度:
用常數1取代運行時間中的所有加法常數
在修改后的運行次數函數中,只保留最高階項
如果最高階項存在且不是1,則去除與這個項相乘的常數
得到的最后結果就是O階

int i,n=100,sum=0;
for(i=0;i<n;i++){
sum+=i;
}
上述代碼時間復雜度為O(n),因為執行100次,循環的時間復雜度為循環體的時間復雜度乘該循環運行的次數。
int i,j,n=100,sum=0;
for(i=0;i<n;i++){
for(j=0;j<n;j++){
sum+=i;
}
}
時間復雜度為O(n2)。


int i,j,n=100,sum=0;
for(i=0;i<n;i++){
for(j=i;j<n;j++){
sum+=i;
}
}


當i=0時執行n次,i=1時執行n-1次,...... 時n+(n-1)+(n-2)+....+1=n(n+1)/2,因此根據策略為O(n2)

int i=1,n=100;
while(i<n){
i=i*2;
}


此程序是每次執行i=i*2然后和n比較,設執行次數為x,當執行x個2相乘的時候大於或者等於n就會推出循環即x*2=n,x=log(2)n,因此時間復雜度為O(logn)。

函數的時間復雜度分析:
int i,n=100,sum=0;
for(i=0;i<n;i++){
function(i);
}

void function(int count){
printf("%d",count);

}
函數的時間復雜度為O(1),即總體為O(n)。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM