Курс 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. Тестирование времени с Freezegun
  3. Вызов функций по строке в Python.
  4. Реализация операции -= для пользовательского класса
  5. Дефолтные параметры в Python
  6. Рекурсия для обращения строки
  7. Переопределение метода __pow__
  8. Создание комплексных чисел
  9. Управление виртуальными окружениями в Python
  10. Импорт модулей в Python 3.12
  11. Логические значения в Python
  12. Капитализация строк
  13. Обновление множества в Python
  14. Метод radd для пользовательских чисел
  15. Курс Data Scientist в медицине
  16. Абстракции словарей и множеств в Python
  17. Метод rlshift для битового сдвига
  18. Отладка в командной строке
  19. Codecademy в Telegram
  20. Получение текущей директории
  21. Методы работы со списками
  22. Проверка кортежей.
  23. Оператор break в Python
  24. Лямбда-функции в цикле
  25. Функциональное программирование.
  26. Определение индекса элемента списка
  27. Enum в Python: создание и использование перечислений
  28. Оператор continue в Python
  29. Добавление элементов в список
  30. Установка и использование emoji
  31. Python 3.12: Псевдонимы типов
  32. Python Enumerate
  33. Официальный канал Python в Telegram
  34. Сортировка с помощью параметра key
  35. Импорт классов из другого файла
  36. Python Метод Union Множеств
  37. Библиотека itertools: объединение списков
  38. Преобразование объекта в строку
  39. Работа со слайсами
  40. Определение имен функций
  41. Метод join() для объединения строк
  42. Python и Монти Пайтон
  43. Проверка версии Python
  44. Область видимости переменных в Python
  45. Непрерывная проверка в Python

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