Чтобы добавить к ответ Рейда , тот факт, что ваш алгоритм имеет O (N) сложность времени, зависит от того, что вы считаете шагом выполнения.Это распространенное заблуждение о временной сложности: эта временная сложность всегда соответствует времени выполнения.
То, что нужно рассмотреть на этапе, зависит от того, насколько глубоко мы хотим проанализировать проблему.Если вы определяете шаг как одно добавление Integer, то ваш алгоритм с аккумуляторами выполняется за O (N) времени.Если вы определяете шаг как сложение одним словом (32- или 64-битное сложение), он выполняется в O (N ^ 2), как объяснил Рейд.
Если вы хотите, чтобы анализ сложности соответствовал выполнениювремя вам нужно использовать шаг выполнения, время выполнения которого ограничено сверху константой, например, добавление двух процессорных слов.Добавление целых чисел - нет, поскольку целые числа могут быть сколь угодно большими.