Курс 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"
- Оптимизация поиска в словарях
- Метод ne для сравнения объектов
- CSV строка разделение в Python
- Декоратор защиты анонимных пользователей
- Получение срезов итераторов
- Проблема сравнения словарей
- Установка пакетов с помощью pip
- Работа с массивами в Python
- Непрерывная проверка в Python
- Сокращение ссылок с pyshorteners
- Функции в одну строку
- Разделение списка на гнппы
- Декораторы классов
- Логирование с Loguru
- Получение обратного списка чисел
- Получение текущей директории
- Операции с комплексными числами
- Автоматизация скриптов на AWS Lightsail.
- Генератор списка в Python
- Генератор данных в Keras
- Форматирование строк с % в Python
- Скрытие вывода данных
- Flask — веб-фреймворк Python
- Генератор бросков кубиков
- Получение идентификатора объекта в памяти
- Установка библиотек в Python
- Оператор объединения словарей
- Округление чисел с помощью round
- Работа со стеком в Python
- Объединение словарей в Python
- Оператор in и not in в Python
- Обмен переменными в Jupyter
- Поиск наиболее частого элемента
- Работа с аргументами командной строки в Python
- Удаление файлов в Python
- Профилирование кода на Python
- Очистка данных с Pandas
- inspect в Python: анализ кода
- Абстракции словарей и множеств в Python
- Перевернуть список в Python
- Расчет времени выполнения
- Создание класса очереди
- Отправка POST-запроса в REST API
- Функция enumerate() в Python















