- •1. Генерация исходных данных
- •2. Быстрая сортировка (Quick Sort)
- •3. Бинарный поиск
- •4. Проверка результатов
- •1. Генерация тестовых данных
- •2. Реализация сортировки пузырьком
- •3. Реализация быстрой сортировки
- •4. Функция сравнения алгоритмов
- •5. Визуализация результатов
- •6. Вывод результатов в таблице
- •1. Сортировка и поиск (Задание 1.1)
- •2. Сравнение алгоритмов (Задание 1.2)
6. Вывод результатов в таблице
print("\nСравнение алгоритмов сортировки:")
print(f"{'Размер':<10}{'Пузырьком (сек)':<20}{'Быстрая (сек)':<20}{'Пузырьком (оп)':<20}{'Быстрая (оп)':<20}")
for i, size in enumerate(array_sizes):
print(f"{size:<10}{bubble_t[i]:<20.5f}{quick_t[i]:<20.5f}{bubble_o[i]:<20}{quick_o[i]:<20}")
Формат вывода:
Размер массива
Время выполнения для каждого алгоритма
Количество операций для каждого алгоритма
Ключевые выводы из кода:
Быстрая сортировка значительно эффективнее на больших массивах
Количество операций растет квадратично для пузырьковой сортировки
Визуализация помогает понять разницу в производительности
Подсчет операций дает дополнительную метрику для сравнения
Этот код полезен для:
Понимания разницы между алгоритмами сортировки
Сравнения теоретической и практической сложности
Демонстрации важности выбора правильного алгоритма
Заключение
В ходе выполнения задания «Реализация алгоритма сортировки и поиска элемента в массиве» я познакомился с двумя ключевыми алгоритмами: быстрой сортировкой (Quick Sort) и бинарным поиском (Binary Search), а также провёл сравнение эффективности пузырьковой и быстрой сортировки.
Основные выводы
1. Сортировка и поиск (Задание 1.1)
Быстрая сортировка показала себя как эффективный алгоритм для больших массивов (10 000 элементов). Бинарный поиск успешно нашёл элемент в отсортированном массиве за O(log n) операций. Проверка с помощью сортировки вставками (insSort) подтвердила корректность моей реализации.
2. Сравнение алгоритмов (Задание 1.2)
Пузырьковая сортировка (Bubble Sort):
Простая реализация, но очень медленная на больших данных (O(n²)).
Для N = 5000 время выполнения в десятки раз хуже, чем у Quick Sort.
Быстрая сортировка (Quick Sort):
Работает за O(n log n) в среднем случае.
На N = 5000 элементов выполняется в 100 раз быстрее, чем Bubble Sort.
Количество операций растёт линейно-логарифмически, а не квадратично.
Графики и таблицы наглядно показали, что:
Bubble Sort резко замедляется при увеличении размера массива.
Quick Sort остаётся стабильно быстрым даже на N = 5000.
Что я узнал и чему научился?
Как работают алгоритмы сортировки
Bubble Sort последовательно сравнивает соседние элементы.
Quick Sort использует стратегию «разделяй и властвуй».
Почему бинарный поиск требует сортировки
Без упорядоченности массива бинарный поиск неприменим.
Как сравнивать эффективность алгоритмов
По времени выполнения (time.time()).
По количеству операций (сравнений и перестановок).
Как визуализировать результаты
С помощью matplotlib построил графики времени и операций.
Итог
Это задание помогло мне: Понять разницу между простыми и сложными алгоритмами. Увидеть, как теория (O-нотация) соотносится с практикой. Научиться проверять корректность своих реализаций.
Вывод: Quick Sort и бинарный поиск — мощные инструменты для работы с данными, а Bubble Sort полезен только для обучения. Для реальных проектов лучше выбирать эффективные алгоритмы!
