Курс Python → Big O оптимизация

Big O оптимизация — это важная задача для разработчиков. Оценка скорости работы программы на разных устройствах может быть сложной из-за различий в аппаратном обеспечении. Для универсальной оценки был разработан подход, использующий понятие Big O. Например, простой алгоритм перебора всех значений имеет сложность O(n), где n — количество значений, так как используется только один цикл. Если же есть два вложенных цикла, как в программе для вывода таблицы умножения, то сложность уже будет O(n^2). Из формул видно, что второй алгоритм работает намного медленнее.

Главное правило — чем больше данных, тем дольше будет работать программа. Например, бинарный поиск имеет сложность O(log n) и работает намного быстрее, но требует отсортированного списка. При оценке сложности учитывается количество проходов по данным, а не количество строк кода. График скорости работы алгоритмов показывает, что чем меньше операций выполняется, тем лучше.

Пример кода:


def linear_search(array, target):
for i in range(len(array)):
if array[i] == target:
return i
return -1

def binary_search(array, target):
low = 0
high = len(array) - 1
while low <= high:
mid = (low + high) // 2
if array[mid] == target:
return mid
elif array[mid] < target:
low = mid + 1
else:
high = mid - 1
return -1

В приведенных примерах кода показаны алгоритмы линейного и бинарного поиска. Линейный поиск имеет сложность O(n), так как выполняет n операций в худшем случае. Бинарный поиск имеет сложность O(log n) и работает быстрее, но требует отсортированного списка. Понимание Big O помогает разработчикам выбирать наиболее эффективные алгоритмы для своих задач.

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Получение частей дроби
  2. Создание списков в Python
  3. Генерация QR-кодов с библиотекой qrcode
  4. Оператор * в Python
  5. Метод hash в Python
  6. Работа с файлами в Python
  7. Нахождение хеша для бесконечности и NaN в Python
  8. Установка виртуального окружения Python
  9. Возведение в квадрат с помощью itertools
  10. Метод ne для сравнения объектов
  11. Определение индекса элемента списка
  12. Создание множества в Python
  13. Объединение кортежей в Python
  14. Распаковка значений в Python
  15. Роль object и type в Python
  16. Сокращение ссылок с pyshorteners
  17. Ограничение ресурсов в Python
  18. Основные операции с Numpy
  19. Склеивание строк без циклов
  20. Расчет времени выполнения кода
  21. Конвертация коллекций в Python.
  22. Работа с коллекциями Python
  23. Создание генераторов в Python
  24. Удаление первого элемента списка
  25. Имена объектов в Python
  26. Управление контекстом с помощью декоратора contextmanager
  27. Метод join() для объединения строк
  28. Генерация ключей RSA
  29. Чтение бинарного файла в Python.
  30. Построение графиков в Matplotlib
  31. Python itertools combinations() — группировка элементов
  32. Библиотека Rich: форматирование текста
  33. Создание Telegram-бота на Python
  34. None в Python: использование и особенности
  35. Функции в одну строку
  36. Работа с PosixPath() в Python
  37. Декораторы в Python
  38. Оптимизация поиска в словарях
  39. Переопределение метода divmod
  40. Асинхронное выполнение задач в Python
  41. Логирование в Python
  42. Функции высшего порядка в Python
  43. Создание задания в Cron

Marketello читают маркетологи из крутых компаний