Курс 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. Вывод с переменной через запятую
  3. Избегайте ошибку FileNotFoundError
  4. Искажение имен в Python
  5. Конструктор в Python
  6. Изменение IP-адреса в Python
  7. Использование модуля __future__
  8. Хеши в Python
  9. Функции высшего порядка в Python
  10. Отладка кода
  11. Работа со случайными элементами
  12. Функция __init__ в Python
  13. Преобразование данных в Python
  14. Отладка утечек памяти в Python
  15. Преобразование чисел в Python
  16. Переменные в Python: сокращение гласных
  17. Импорт модулей в Python 3.12
  18. Преобразование регистра строк
  19. Метод __complex__ в Python
  20. Преобразование типов данных в set comprehension
  21. Обработка исключений с блоком else
  22. Оператор match в Python
  23. Динамическая типизация в Python
  24. Очистка данных в Python
  25. Получение списка кортежей из словаря
  26. Операции с кортежами
  27. Magic Commands — улучшение работы с Python
  28. Срезы в Python
  29. Метод get для словарей
  30. Оператор += для объединения строк
  31. Работа с Telegram API на Python
  32. Расчет времени выполнения кода
  33. Импорт в Python: список all
  34. Фильтрация списка от «ложных» значений
  35. Повторение элементов списков
  36. Создание словаря в Python
  37. Роль object и type в Python
  38. Настройка вывода NumPy
  39. Запуск внешних программ с subprocess
  40. Проблемы с dict в Python
  41. Создание копии итератора
  42. Использование функции product
  43. Удаление специальных символов с помощью re.sub
  44. Python и Юникод: работа с цифрами
  45. Декоратор проверки активности
  46. Сортировка и разворот списка
  47. Поиск самого частого элемента

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