Курс 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. Enum в Python
  3. Настройка Cron
  4. Работа с zip()
  5. Модуль os в Python: работа с файлами
  6. Декоратор Ajax required
  7. Хранение данных
  8. Работа со словарями
  9. Шаблоны и наследование в Flask
  10. Операторы присваивания в Python
  11. Именованные срезы в Python
  12. Декоратор защиты анонимных пользователей
  13. Взаимодействие с внешними процессами в Python
  14. Форматирование данных с pprint
  15. Метод rlshift для битового сдвига
  16. Подсчет количества элементов в списке
  17. Метод setdefault() в Python
  18. Подписка на каналы разработчиков
  19. Работа с файлами и директориями в Python.
  20. Метод hash в Python
  21. Переопределение метода delitem в Python
  22. Создание функций с произвольным количеством аргументов
  23. Работа со списками
  24. Создание генераторов в Python
  25. Установка и загрузка Instaloader
  26. Работа со стеком в Python
  27. Область видимости переменных
  28. Поиск простых чисел
  29. Принципы программирования
  30. Перезагрузка оператора в Python
  31. Присвоение значений переменным в Python
  32. Метод classmethod
  33. Основы Python за 14 дней
  34. Печать календаря
  35. Непрерывная проверка в Python
  36. Создание инструмента обнаружения плагиата
  37. Работа с переменными в Python
  38. Цикл for в Python
  39. Генераторы списков
  40. Список методов и атрибутов
  41. Работа с collections в Python.
  42. Поиск индексов в списке
  43. Декоратор Property в Python
  44. Печать в одной строке
  45. Повторение элементов в Python
  46. UserList в Python: Описание и примеры использования
  47. Хешируемые ключи в Python
  48. Переворот последовательности

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