🚀 Big O Notation (О-большое) в одной картинке: как оценить сложность алгоритма Каждый айтишник рано или поздно сталкива
Каждый айтишник рано или поздно сталкивается с проблемами производительности. Если ваш скрипт автоматизации, парсер или SQL-запрос начал безбожно тормозить при росте нагрузки, скорее всего, вы случайно написали алгоритм со сложностью O(n²) или хуже. 😅
🟢 Зеленая зона (Идеал и почти идеал):
• O(1) - Константное время. Скорость не зависит от объема данных. Пример: чтение значения из массива по индексу или из хэш-таблицы.
• O(log n) - Логарифмическое время. Очень быстро работает даже на огромных объемах. Пример: бинарный поиск или поиск в сбалансированном дереве (B-Tree в базах данных).
🔵 Синяя/Зеленая зона (Нормально):
• O(n) - Линейное время. Время растет пропорционально количеству данных. Пример: простой перебор массива циклом for или поиск максимума/минимума.
• O(n log n) - Линеарифмическое время. Лучшее, что мы можем выжать из алгоритмов сортировки общего назначения (Quick Sort, Merge Sort).
🟣/🔴 Красная зона (Опасно на больших данных):
• O(n²) и O(n³) - Квадратичное и кубическое время. Те самые вложенные циклы. На тысячах записей отработает, на миллионах - положит сервер.
• O(2^n) и O(n!) - Экспоненциальное и факториальное время. Растет катастрофически быстро. Применяется только для очень специфических задач (например, задача коммивояжера) и на минимальных объемах данных.
♻️ Сделай репост, чтобы помочь другим.
👉 @itmozg