2012-02-25 2 views
-3

Какова будет сложность выполнения этого фрагмента кода. Код работает так, как он должен работать, я немного запутался в сложности выполнения.Что такое сложность выполнения этого кода?

int Something(int x[]){ 
int i=0; 
for(i=0;i<x.length;i++){ 
    //some code over here 
    i=-1; 
} 

Обратите внимание, что это не бесконечный цикл, так как в цикле есть оператор continue и break. Однако он делает цикл довольно много раз из-за условия i = -1 в конце цикла.

O (n) сложность означает, что нет вложенных циклов, и этот код не имеет вложенных циклов. Но я действительно не думаю, что это будет O (n). Это также не будет O (n^2) или что-то в этом роде, поскольку нет вложенных циклов.

+3

Вы спрашиваете о памяти или времени? 'O (n) сложность означает, что нет вложенных циклов, и этот код не имеет вложенных циклов' - это не так просто. 'Это также не будет O (n^2) или что-то в этом роде, поскольку нет вложенных циклов' - не так просто. 'есть инструкция continue и break в цикле' - как мы должны помочь, если мы даже не можем увидеть весь код? –

+2

Невозможно сказать, не видя условий разрыва/продолжения. Пожалуйста, разместите остальную часть кода. –

+0

Какое максимальное количество раз выполняется 'i = -1;'? Когда он выполняется w.r.t. последнее значение 'i'? –

ответ

2

В текущей форме это is O (бесконечность). Это никогда не остановится.

Если в цикле есть оператор break, вы должны предоставить полный код. Без этого анализ невозможен.

+2

Прочитайте остальную часть вопроса. Он останавливается. –

+0

@Nick Barnes: Я обновил свой ответ в то время, когда вы создали этот комментарий. –

+0

+1 'O (бесконечность)' правильно ли оно останавливается или нет :) –

Смежные вопросы