Курс 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. Применение функции map() в Python
  2. Работа с изображениями PIL
  3. Сравнение объектов в Python
  4. Работа с переменными в Python
  5. Работа со списками
  6. Расчет времени выполнения
  7. Генератор чисел Фибоначчи
  8. Создание словарей с defaultdict()
  9. Извлечение новостей с newspaper3k
  10. Импорт модулей в Python 3.12
  11. Объединение словарей в Python
  12. Метод join для наборов
  13. Слияние словарей в Python 3.9
  14. Методы работы со строками в Python
  15. Нарезка списков в Python
  16. Создание детектора плагиата
  17. Работа с Path в Python
  18. Отладчик pdb: начало работы
  19. Определение объема памяти объекта
  20. Объединение списков в строку
  21. Метод __int__ в Python
  22. Создание коллекций из генератора
  23. Оптимизация памяти с __slots__
  24. Метод join() для объединения элементов в строку.
  25. List Comprehension Tutorial
  26. Работа с SQLite в Python
  27. Удаление элемента из списка в Python
  28. Поиск самого длинного слова в списке с использованием max()
  29. lru_cache оптимизация функций
  30. Работа с часовыми поясами в Python
  31. split() — разделение строки
  32. Counter() — подсчет элементов
  33. Перевод двоичного кода в целое число
  34. Метод __complex__ в Python
  35. Модуль inspect
  36. Описание скриптов в README
  37. Функция zip() — объединение последовательностей
  38. Глобальные переменные в Python
  39. Работа с асинхронными задачами в Python
  40. Структура данных deque в Python
  41. Numpy: разбиение массивов
  42. Модуль xkcd: добавление юмора в Python
  43. Обход словаря в Python

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