Итак, я готовлюсь к экзамену, а 25% этого экзамена - по Big-O, и я как бы теряюсь в том, как получить сложность и Big-O от алгоритма. Ниже приведены примеры ответов, мне просто нужно объяснение того, как были ответы, и рассуждения о том, почему некоторые вещи выполняются, это лучшее объяснение, которое я могу дать, потому что, как упоминалось выше, я не знаю этого очень хорошо:Сложность и Big-O алгоритма
int i =n; //this is 1 because it is an assignment (=)
while (i>0){ //this is log10(10)*(1 or 2) because while
i/=10; //2 bc/and = // loops are log base (whatever is being /='d
} //the answer to this one is 1+log10(n)*(1 or 2) or O(logn)
//so i know how to do this one, but im confused when while and for
//loops nested in each other
int i = n; int s = 0;
while (i>0){
for(j=1;j<=i;j++)s++;{
i/=2;
} //the answer to this one is 2n +log2(n) + 2 or O(n)
//also the i/=2 is outside for loop for this and the next one
int i = n; int s=0
while (i>0){
for(j=1;j<=n;++J) s++;
i/=2;
} //answer 1+nlogn or O(nlogn)
int i = n;
for(j=1;j<=n;j++)
while(i>o) i/=2;
//answer is 1+log2(n) or O(log(n))
for(j=1; <=n; ++j){
int i-n;
while(i>0) i/=2;
} //answer O(nlog(n))
Каждый из этих, но первый имеет ошибки кодирования. А четвертый - O (n). –
, возможно, почему я не могу понять, потому что я просто скопировал это задание. И нам сказали, что последний был nlogn, не могли бы вы объяснить, почему это O (n) – Wongesse
Как только современный компилятор с ними справится, все они O (0). Нотация Big-O обычно подсчитывает объем выполненной работы. – MSalters