Курс 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. Константы в модуле cmath
  4. Функции range() в Python
  5. Метод gt в Python
  6. Тайное преобразование типа ключа
  7. Загрузка постов Instagram
  8. Проверка класса объекта
  9. Объединение Python и Shell
  10. Перемещение и удаление файлов в Python
  11. Бесконечная проверка в Python
  12. Отправка поздравлений по дню рождения
  13. Функции map, filter, reduce
  14. Выключение компьютера с помощью Python
  15. Работа с WindowsPath()
  16. Метод сравнения объектов в Python
  17. Метод Enumerate() для списков
  18. Оформление кода по PEP 8
  19. Howdoi — получение ответов из терминала
  20. Ключевое слово global в Python
  21. Функция enumerate в Python
  22. Модуль inspect
  23. Закрытие файла в Python
  24. Модуль math: константы π и e
  25. Оптимизация гиперпараметров с Scikit Optimize
  26. Python itertools combinations() — группировка элементов
  27. Метод setdefault() в Python
  28. Python-dateutil — работа с датами
  29. Обработка исключений в Python
  30. Использование type hints
  31. Именованные кортежи в Python
  32. Отрицательные индексы списков в Python
  33. Настройка логгера Logzero
  34. Numpy: использование Ellipsis
  35. Модуль functools в Python
  36. Работа с коллекциями Python
  37. Метод count в Python: почему count(», ») возвращает 4?
  38. Показ всплывающих окон Tkinter
  39. Функция count() в Python
  40. Многострочные комментарии в Python
  41. Установка и использование Virtualenv
  42. Импорт классов из другого файла
  43. Обновление данных через PUT запрос
  44. Возвращение нескольких значений
  45. Цикл for в Python

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