2013-04-09 95 views
0

好吧,我想了解大O的概念。我有一個功能,我想找到大O,我不是很「得到它」,這是一本書中的例子一個就像我的家庭作業..我知道答案是O(nk),但是有人可以用簡單的術語來解釋這個問題,所以我可能會更好地理解。BIg O對初學者的幫助

int selectkth(int a[], int k, int n) 
{ 
int i, j, mini, tmp; 
for (i=0; i < k; i++) 
{ 
mini = i; 
for (j = i+1; j < n; j++) 
{ 
if (a[j] < a[mini]) 
mini = k; 
tmp = a[i]; 
a[i] = a[mini]; 
a[mini] = tmp; 
} 
} 
return a[k-1]; 
} 
+0

檢查循環次數可能有助於引導您更加接近準確的複雜度度量......但作爲一個更好的(也許更準確的)參考,我建議您看看這個其他的[問題/答案](http:///stackoverflow.com/questions/3255/big-o-how-do-you-calculate-approximate-it)(特別是,[這個答案](http://stackoverflow.com/a/4852666/11677 50)。)):) – summea 2013-04-09 23:46:50

回答

1

在計算bigO的時候試着想想最壞的時間複雜度,並且注意循環。這裏,我們有兩個環:

//下面線運行k倍

爲(I = 0;我< K表;我++)

//最壞的情況,環下面將運行n次。

爲(J = + 1;Ĵ< N; J ++)

戈將是這兩個值相乘togehter = K * N

還檢查了此篇:What is a plain English explanation of "Big O" notation?

+0

多數民衆贊成在約最簡單的解釋我已經看到..謝謝你111 – 2013-04-10 14:59:09

+0

這是關於我見過的最簡單的解釋..謝謝! – 2013-04-10 14:59:32