Ответ
Линейная сложность O(n) означает, что время выполнения алгоритма растёт прямо пропорционально размеру входных данных.
Пример - поиск максимального элемента в массиве:
function findMax(arr) {
let max = arr[0];
for (let i = 1; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
return max;
}
В этом случае:
- Проходим по каждому элементу массива ровно 1 раз
- Количество операций прямо зависит от длины массива (n)
- В худшем случае (когда массив отсортирован по возрастанию) сделаем n-1 сравнений
Другие примеры: суммирование элементов массива, линейный поиск, обход связного списка.
Ответ 18+ 🔞
Да ты посмотри, что за хуйня творится! Вот берём мы, допустим, массив. Ну, короче, кучу чисел там, неважно. И надо найти самое большое. Ну, понятно, да? Пиздёныш этот, максимум.
Так вот, если у нас элементов, блядь, n штук, то и шагов нам нужно сделать примерно n. Прям как в армии: один солдат — один шаг, сто солдат — сто шагов. Пропорционально, ёпта! Это и есть O(n), линейная сложность, мать её.
Смотри, вот тебе живой пример, чтоб не пиздел, что не понял:
function findMax(arr) {
let max = arr[0];
for (let i = 1; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
return max;
}
Что тут происходит, а? Берём первый элемент, запоминаем как царя и бога. А потом, сука, начинаем шествие по всему этому стаду, с первого до последнего ублюдка. Каждого сравниваем с нашим текущим царём. Если нашли больше — ну, извини, старый царь, пошёл нахуй, теперь этот новый крутой. И так до конца.
Вот и получается: элементов n — и операций сравнения тоже примерно n. В самом пиздатом случае, если массив отсортирован по возрастанию (представь, какие умники!), то каждый следующий элемент будет больше предыдущего, и мы будем менять max на каждом шагу. То есть n-1 сравнение сделаем. Ну, почти n, ядрёна вошь!
И это, блядь, не только для поиска максимума. Сумму всех элементов посчитать — тоже O(n). По списку пробежаться, чтоб что-то найти — опять O(n). Прям как в жизни: чтобы всех пересчитать, надо по каждому пройтись, волшебной хуйни не бывает.
Вот такая, блядь, простая и честная сложность. Никаких хитрых прыжков, просто идёшь и делаешь дело.