Курс 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. Декораторы в Python
  2. Распаковка аргументов в Python
  3. Изменение переменной в Python: nonlocal
  4. Автоматизация скриптов на AWS Lightsail.
  5. Класс Counter() для подсчета элементов
  6. Определение локальных переменных в Python
  7. Colorama: окрашивание текста в Python
  8. Применение функции к каждому элементу списка
  9. Деление в Python
  10. Повторение элементов списков
  11. Работа с классами данных
  12. Введение в PyTorch
  13. Создание словарей и множеств в Python.
  14. Удаление URL-адресов в Python
  15. Вывод символов строки в Python
  16. Получение ID процесса
  17. Переворот списка в Python
  18. Логирование с Logzero
  19. Решатель судоку на Python с pygame
  20. Оператор «not» в Python
  21. Перемещение и удаление файлов в Python
  22. Бесконечная проверка в Python
  23. Библиотека wikipedia для Python
  24. Операторы Splat и splatty-splat
  25. Автоматизация с Python
  26. Оператор деления для класса Rational
  27. Уникальные значения из списка
  28. Метод count() для списков
  29. Списковое включение в Python
  30. Новшества Flask 2.0
  31. Работа со строками в Python.
  32. Счетчик ссылок в Python
  33. Декораторы в Python
  34. Проверка дублей в списке.
  35. Генерация случайных чисел в Python
  36. Использование обратной косой черты в f-строках
  37. Создание словарей в Python
  38. Метод Enumerate() для списков
  39. Анонимные функции Lambda
  40. Отладка кода
  41. Генерация тестовых данных с factory_boy
  42. Избегайте ошибку FileNotFoundError

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