Я пытаюсь понять время complexity.Someone здесь упоминалось, что время сложность O (N), пожалуйста, найти изображение ниже: Так как N(N+1)/2
, не должна быть O (N ^ 2) как N(N+1)
находятся в умножении? Пожалуйста, поправьте меня, если я что-то не понял.
Вышеприведенный код вычисляет n (n + 1)/2, но это не значит, что требуется время O (n 2). Например, рассмотрите этот код:
int x = n*n;
Этот код вычисляет n 2 но он работает во времени O (1).
Надеюсь это поможет!
Сложность - это мера ресурсов, требуемых алгоритмом. В этом случае, если размер n
списка удваивается, тогда требуемое время также удвоится. Другими словами, ресурс требуемого времени пропорционален n
. Это выражается как O (n). Это не имеет значения, сколько времени занимает каждый шаг; единственная важная вещь - это общее время, затраченное на вход.
N=200
то сложность будет O(n^2)
? Точно так же, если N=300
, это будет O(n^3)
?
Вы неправильно поняли ответ: когда автор говорит, что "сумма натуральных чисел от 1 до N равна N * (N-1)/2", он предоставляет выражение закрытой формы для вычисления суммы, если присутствуют все 100 чисел. Это значение вычисляется в O (1).
Вычисление суммы из 99 номеров из списка, который нам дается, принимает O (N).