Временная сложность O (n) для поиска пропущенного числа?

1

Я пытаюсь понять время complexity.Someone здесь упоминалось, что время сложность O (N), пожалуйста, найти изображение ниже: Так как N(N+1)/2, не должна быть O (N ^ 2) как N(N+1) находятся в умножении? Пожалуйста, поправьте меня, если я что-то не понял.

Изображение 174551

  • 5
    Если вы ищете пояснения к ответу, вы должны оставить комментарий к ответу со своим вопросом.
  • 0
    Поскольку в коде присутствует только один цикл от i = 0 до n .. это O (N)
Показать ещё 2 комментария
Теги:
time-complexity

3 ответа

4
Лучший ответ

Вышеприведенный код вычисляет n (n + 1)/2, но это не значит, что требуется время O (n 2). Например, рассмотрите этот код:

int x = n*n;

Этот код вычисляет n 2 но он работает во времени O (1).

Надеюсь это поможет!

1

Сложность - это мера ресурсов, требуемых алгоритмом. В этом случае, если размер n списка удваивается, тогда требуемое время также удвоится. Другими словами, ресурс требуемого времени пропорционален n. Это выражается как O (n). Это не имеет значения, сколько времени занимает каждый шаг; единственная важная вещь - это общее время, затраченное на вход.

  • 0
    Итак, если N=200 то сложность будет O(n^2) ? Точно так же, если N=300 , это будет O(n^3) ?
  • 0
    @ Джон, возможно, я не очень хорошо это объяснил. Сложность O (n) независимо от n. Это действительно просто говорит о том, что время будет пропорционально n.
Показать ещё 2 комментария
1

Вы неправильно поняли ответ: когда автор говорит, что "сумма натуральных чисел от 1 до N равна N * (N-1)/2", он предоставляет выражение закрытой формы для вычисления суммы, если присутствуют все 100 чисел. Это значение вычисляется в O (1).

Вычисление суммы из 99 номеров из списка, который нам дается, принимает O (N).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню