Так что это отличный вопрос! Это сложный вопрос, который требует немного больше размышлений для анализа.
Как правильно указано в некоторых других ответах, внешний l oop:
for(int i = n; i > 0; i/=3)
будет запускать log (n ) раз. В частности, log_3 (n) раз, но в большой нотации O мы не часто беспокоимся о базе, поэтому log (n) подойдет.
Теперь вложенный l oop немного сложнее:
for(int j = 0; j < i; j++){
На первый взгляд вы можете подумать, что это простой журнал (n) l oop, но давайте посмотрим немного дальше. Таким образом, на первой итерации это будет выполнено N раз, так как значение i будет n. На следующей итерации он будет запущен n / 3 раз. Тогда n / 9, n / 27, n / 81 и т. Д. c ....
Если мы просуммируем этот ряд, ясно, что он составит меньше 2n. Следовательно, мы можем заключить, что этот алгоритм имеет сложность O (n).