算法的時間復雜度:用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)。

