Сложность измеряется временем / пространством, которое вы берете для выполнения sh задачи. i<N
и ++i
не требуют времени, зависящего от вашей пространственной переменной N (длина l oop).
Вы не должны добавлять количество выполненных операций и суммировать их все - вместо этого вы должны выбрать тот, который занимает больше времени или пространства, поскольку это является узким местом алгоритма. В al oop msot операций выполняется одинаковое время, поэтому мы используем длину l oop в качестве пространства или времени сложности.
l oop будет выполняться N раз, так что его сложность -> O (n)
Внутри l oop область действия if будет выполняться N / 2 раза, как вы правильно сказали -> O (n / 2)
Но эти прогоны уже добавлены к первым l oop итерациям. Вы не добавите его, так как внешних итераций нет.
Итак, сложность алгоритма составляет O (n).
Что касается операций, 3:
- Проверка I
- Добавление 1 к I
- Условие if
Все они выполняются на каждой итерации.