Курс 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. Установка Git и AWS CLI
  2. Создание новых списков в Python
  3. Замеры производительности в Python
  4. Создание вложенных циклов for
  5. Многострочные комментарии в Python
  6. Управление памятью в numpy.
  7. Удаление ключа из словаря
  8. Удаление дубликатов из списка с помощью dict.fromkeys
  9. Combobox в Tkinter
  10. Удаление дубликатов из списка
  11. Перемещение и удаление файлов в Python
  12. Измерение времени выполнения кода
  13. Пустой оператор pass в Python
  14. Функция format() в Python
  15. Изменение регистра данных
  16. Генераторы в Python
  17. Группы исключений в Python
  18. Создание даты из строки ISO
  19. Создание объекта timedelta
  20. Метод get() для словарей
  21. Функция pow() — возвести число в степень
  22. Инверсия списка/строки в Python
  23. Работа с модулем cmath
  24. Добавление кнопки в tkinter
  25. Оператор del в Python
  26. Динамические маршруты во Flask
  27. Удаление специальных символов
  28. Применение команды break
  29. Управление фоновыми задачами в Python
  30. Оператор Walrus в Python
  31. Измерение потребления памяти при сортировке
  32. Измерение времени выполнения с помощью time
  33. Метод repr() в Python
  34. Переопределение метода divmod
  35. Установка и обучение ChatterBot
  36. Нахождение разницы между списками в Python
  37. Модуль math: основные функции
  38. Python Метод sleep() из time
  39. Работа с необработанными строками
  40. Очистка входных данных
  41. Monkey Patching в Python
  42. Оператор распаковки в Python
  43. Автоматизация с Python
  44. Пространство имен в Python
  45. Удаление дубликатов с помощью множеств
  46. Оператор match в Python
  47. Метод setdefault() в Python

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