Я пытаюсь решить сложность этого цикла
for(int i= 0; i < n; i++) {
c = i;
while(c > 1){
O(1);
c = c / 2;
}
}
так как условие while изменяется в каждом цикле, я не знаю, как рассчитать этот странный ряд.
Я имею в виду, если цикл где
for(int i= 0; i < n; i++) {
c = n;
while(c > 1){
O(1);
c = c / 2;
}
}
Я знаю, что while имеет сложность O (logn) и повторяется n раз, поэтому сложность будет O (nlogn).
Проблема с предыдущим циклом - "c = i". Поскольку c = i, в первый раз (c = 0) цикл будет воспроизводиться 0 раз, когда c = 1 он будет воспроизводиться снова 0 раз, когда c = 2 будет воспроизводиться 1 раз, затем будет следовать ряд, и это 0, 0, 1, 2, 2, 3, 3 ... (при каждом воспроизведении цикла for)
O (logn) не повторяется n раз, повторяется несколько раз, что я не могу придумать, поэтому я не знаю, как это решить.