TIME COMPLEXITY
假設我們的電腦每秒可以做10億次運算
可是怎麼知道是哪個數量級?
怎麼估計一個程式的執行時間
到底怎麼定義???
Big O
Omega
Theta
可以想像成集合
int A[10]={0,1,9,2,8,3,7,4,6,5};
int N=10;
for(int i=0;i<N;i++){ //1
for(int j=0;j<N-1;j++){//2
if(A[i]>A[j])swap(A[i],A[j]);//3
}//4
}//5Bubble Sort
Line 1~5: 執行N次=>
Line 2~4: 執行N-1次=>
Line 3: 花費時間=1 =>
總時間複雜度:
為甚麼 有兩個答案?
沒錯,都是答案
但是需要準確的答案
//binary search
int A[]={0,1,2,13,14,15,26,27,28,39};
int N=10;
int l=0,r=N-1,find=26,ans=-1;
while(l<=r){//1
int mid=(l+r)//2;
if(A[mid]==find)ans=mid;//3
else if(A[mid]>find)r=mid-1;//4
else if(A[mid]<find)l=mid+1;//5
}//6//find the max element
int A[]={1,0,2,9,3,8,4,7,5,6};
int N=10,mx=-100000000;
for(int i=0;i<N;i++){//1
mx=max(mx,A[i]);//2
}//3假設我們的電腦每秒可以做10億次運算