Курс 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. Библиотека sh: использование команд bash в Python
  2. Форматирование чисел в Python
  3. Присоединение элементов коллекции
  4. Генераторы в Python
  5. Курсы Яндекс Практикум
  6. Метод append() для списка
  7. Получение ID текущего процесса
  8. Изменяемые и неизменяемые объекты
  9. Декораторы в Python
  10. Ограничение итераций в Python
  11. Поиск с библиотекой Google
  12. Обработка исключений в Python
  13. Модуль math: константы π и e
  14. Создание пользовательской коллекции в Python
  15. capitalize() — изменение регистра первого символа строки
  16. Эффективная конкатенация строк с использованием join()
  17. Декоратор Ajax required
  18. Основы Python
  19. Установка максимального количества цифр
  20. Извлечение новостей с newspaper3k
  21. Получение локальных переменных в Python
  22. Логирование с Logzero
  23. Solidity для DeFi Ethereum
  24. Работа с модулем cmath
  25. Итерация по копии коллекции
  26. Добавление элемента в список.
  27. Объединение строк с помощью метода join
  28. Генераторы списков в Python
  29. Создание множества в Python
  30. Список переменных в Python
  31. Модуль array: создание и использование массивов
  32. Оператор is в Python
  33. Создание функций с произвольным количеством аргументов
  34. Оператор continue в Python
  35. Вывод с переменной через запятую
  36. Метод invert для побитового отрицания
  37. Управление ресурсами с контекстными менеджерами
  38. Присвоение и ссылки
  39. Переворот последовательности
  40. Загрузка постов Instagram

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