Курс 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. Класс Counter() для подсчета элементов
  4. Управление виртуальными окружениями в Python
  5. Создание графиков в терминале
  6. Добавление элементов в список: append() vs extend()
  7. Применение функции к элементам списка
  8. Обработка исключений в Python
  9. Выключение компьютера с помощью Python
  10. Передача аргументов через **arguments
  11. Отправка HTTP-запросов в Python
  12. Список импортированных модулей в Python
  13. Замена текста в Python
  14. Форматирование строк в Python
  15. Структура строк в Python
  16. Работа с itertools
  17. Python: библиотеки и функции
  18. Функция pow() — возвести число в степень
  19. Создание и инициализация объектов
  20. Работа со словарями в Python
  21. Распаковка аргументов в Python
  22. Обновление и получение данных в SQLite
  23. Использование модуля __future__
  24. Нахождение самого длинного слова в списке с помощью max
  25. Фильтрация списка чисел
  26. Принципы Zen of Python
  27. Форматирование вывода списков
  28. Декоратор Property в Python
  29. Функция zip() в Python
  30. Расчет времени выполнения программы
  31. Отслеживание выполнения программы с библиотекой tqdm
  32. Создание словаря через dict comprehension
  33. Назначение максимального и минимального значения переменной в Python.
  34. Перегрузка операторов в Python
  35. Создание namedtuple из словаря
  36. Работа со слайсами
  37. Использование super() в Python
  38. Карта бомбоубежищ в Москве и Питере
  39. Глобальные переменные в Python
  40. Разница между датами
  41. Протокол управления контекстом
  42. %pinfo: получение информации об объекте
  43. Лямбда-функции в Python
  44. Модуль future Python
  45. List Comprehension Tutorial

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