Це тільки підтверджує, що відеоуроки - то фігня. Дві години вбили і ніц не зрозуміли.
O(n) означає, що кількість операцій час роботи програми залежить від кількості вхідних даних лінійно, на кшталт k+l*n, де k - час на фіксовані дії (ініціалізацію змінних і вивід результату, наприклад), а l - час на обробку одиниці вхідних даних. Наприклад, програма, що шукає максимум, має саме таку складність: деякі операції будуть виконані незалежно від того, скільки є вхідних даних і чи є вони взагалі, а деякі (ввід, порівняння і присвоювання) - стільки разів, скільки є вхідних значень. Так, деякі операції (присвоювання в результаті порівняння) будуть виконуватися не завжди, але для простоти беремо найгірший випадок і вважаємо, що вони будуть завжди; ну і, зрештою, якщо масив буде впорядкований по зростанню, то ввід, присвоювання і порівняння будуть виконуватися завжди (час, умовно, k+3*n), а якщо максимум буде першим, то ніколи (k+2*n). Обидва вирази лінійні, тобто складність завжди O(n).
А логарифмічна складність виникає, коли об'єм даних, що лишився, зменшується на кожному кроці в певну кількість разів. Наприклад бінарний пошук по впорядкованому масиву - беремо середину, якщо не вгадали - беремо середину того відрізку, що лишився і т.д. - має логарифмічну складність.
В чому сенс цього всього? В тому, що реальним алгоритмам треба обробляти дуже великі об'єми даних. Настільки великі, що число k взагалі непомітне (що таке п'ять хвилин прогріву, якщо алгоритм буде працювати два місяці?), а зменшення коефіціенту l удвічі - ніщо порівняно із заміною алгоритму на інший з логарифмічною складністю. Хоча, звісно, треба бути обережним, а то алгоритм Коперсміта-Винограда вийде - він, звісно, оптимальніший за інші, але тільки для матриць, яким на сучасних носіях знадобиться більше фізичного місця, ніж його займає Земля.