Какова временная сложность функции ниже?Как рассчитать сложность времени для функции ниже?
void function(int n){
for(int i=0; i<n; i++){. //n times
for(int j=i ; j< i*i; j++){ // n*n times
if(j%i == 0){
for(int k=0; k<j; k++){ // j times = n * n times.
++counter;
}
}
}
}
}
Книга говорит O(n^5)
. Но я не мог понять, почему книга не учитывала j%i
. На основании этого определяется петля k
. Вы можете уточнить?
спасибо. Вы предполагаете, что все три петли возьмут O (n^4). Я немного смущен. Можете ли вы, пожалуйста, объяснить выше с помощью внешнего цикла. – Manoj
@Manoj Я пишу еще один ответ, чтобы все было ясно. Возьмем пару минут –
@Manoj: Да, для одной конкретной i внутренней петли (часть кода, о которой я упоминал) сложность O (i^3), и так как я будет варьироваться от 0-n, сложность равна O (п^4). По крайней мере, это то, что я получаю. Можете ли вы упомянуть книгу? –