2013-04-09 3 views
0

Хорошо, я пытаюсь понять концепцию Big O. У меня есть функция, я полагаю, чтобы найти Big O, и я не совсем «получаю это», это пример в книге тот, который похож на мою домашнюю работу. Я знаю, что ответ O (nk), но кто-то может прорвать это в упрощенном виде, чтобы я мог лучше понять.BIg O help для новичков

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

ответ

1

При расчете bigO старайтесь думать о наихудшей сложности во времени и обращать внимание на циклы. Здесь мы имеем две петли:

// Ниже строки бегут к раз

для (I = 0, я < к; я ++)

// Наихудший сценарий, цикл ниже будет выполняться п раз ,

для (J = I + 1, J < п; j ++)

BiGo бы эти два значения умножаются togehter = к * п

Кроме того, проверить этот пост: What is a plain English explanation of "Big O" notation?

+0

вот про простейшее объяснение я видел .. Спасибо111 –

+0

То есть про простейшее объяснение я видел .. Спасибо !!! –