Курс 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. Игра «Камень, ножницы, бумага» — Python
  4. Очистка строки в Python
  5. Роль запятой в Python
  6. Множественное назначение в Python
  7. Отношения подклассов в Python
  8. Функция findall() для поиска вхождений строки
  9. Импорт объектов из модулей
  10. Форматирование строк в Python
  11. Удаление дубликатов из списка
  12. Проверка подстроки в строке с помощью in
  13. Отладка кода
  14. Получение ID текущего процесса
  15. Метод count() для списка
  16. Работа с модулем glob в Python
  17. Разработка игры Pong с turtle
  18. Создание обратного итератора
  19. Переопределение метода
  20. Вычисление натурального логарифма в NumPy
  21. Отладка производительности Python
  22. Удаление элемента из списка
  23. Проверка условий в Python
  24. Работа с дробями в Python
  25. Генераторные функции в Python
  26. Избегайте двойного подчеркивания
  27. Расширение информации об ошибке в Python
  28. Сортировка данных в Python
  29. Атрибуты класса и экземпляра в Python
  30. PATCH-запрос с библиотекой requests
  31. Работа с часовыми поясами в Python
  32. Конкатенация списков в Python
  33. Удаление и повторная вставка ключа в OrderedDict
  34. Кортеж в Python: создание, доступ, изменение
  35. Библиотека sh: использование команд bash в Python
  36. Подсказки типов в Python
  37. Измерение времени выполнения кода
  38. Импорт модуля из другого каталога
  39. Умножение строк и списков
  40. Глобальные переменные в Python
  41. Модуль math: константы π и e
  42. Печать комбинаций в Python с Itertools
  43. Атрибуты класса и экземпляра

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