Хоча прийнята відповідь є досить хорошою, вона все ще не стосується реальної причини, чому .O(n)=O(2n)
Нотація Big-O описує масштабованість
По суті, Big-O Notation - це не опис того, скільки часу алгоритму потрібно запустити. Це також не опис того, скільки кроків, рядків коду чи порівнянь робить алгоритм. Найбільш корисно при використанні описати, як алгоритм масштабується з кількістю входів.
Візьмемо, наприклад, двійковий пошук. З огляду на відсортований список, як знайти довільне значення всередині нього? Що ж, можна почати з середини. Оскільки список відсортований, середнє значення вкаже вам, на яку половину списку входить ваше цільове значення. Отже, список, який потрібно шукати, зараз розділений навпіл. Це можна застосовувати рекурсивно, потім переходите до середини нового списку тощо, поки розмір списку не дорівнює 1 і ви не знайдете своє значення (або воно не існує в списку). Подвоєння розміру списку додає лише один додатковий крок до алгоритму, який є логарифмічним співвідношенням. Таким чином, цей алгоритм є . Логарифм - основа 2, але це не має значення - суть взаємозв'язку полягає в тому, що множення списку на постійне значення лише додає постійного значення часу.O(logn)
Протиставити звичайний пошук через несортований список - єдиний спосіб пошуку значення в цьому випадку - це перевірити кожен. Найгірший сценарій (який конкретно має на увазі Big-O) - це те, що ваше значення знаходиться в самому кінці, що означає для списку розміру , ви повинні перевірити значень. Подвоєння розміру списку збільшується вдвічі, скільки разів потрібно перевірити, що є лінійною залежністю. . Але навіть якщо вам довелося виконати дві операції над кожним значенням, деякі обробки, наприклад, лінійна залежність все-таки виконується. просто не є корисним як дескриптор, оскільки він би описував точно таку ж масштабованість, що і .nnO(n)O(2n)O(n)
Я вдячний, що багато з цих відповідей, в основному, говорять про те, щоб ви самі прийшли до цього висновку, прочитавши визначення Big-O. Але це інтуїтивне розуміння зайняло у мене досить багато часу, щоб обернути голову, і тому я викладаю це вам так просто, наскільки я можу.