Реализация пяти классических алгоритмов сортировки на чистом Python без внешних зависимостей.
- Bubble Sort — пузырьковая сортировка с оптимизацией диапазона проверки
- Quick Sort — быстрая сортировка методом «разделяй и властвуй»
- Selection Sort — сортировка выбором минимального элемента
- Insertion Sort — сортировка вставками со сдвигом элементов
- Merge Sort — сортировка слиянием с рекурсивным разделением
├── main.py # Демонстрация работы всех алгоритмов
├── sorting/
│ ├── __init__.py
│ ├── bubble_sort.py # Пузырьковая сортировка
│ ├── quick_sort.py # Быстрая сортировка
│ ├── selection_sort.py # Сортировка выбором
│ ├── insertion_sort.py # Сортировка вставками
│ └── merge_sort.py # Сортировка слиянием
└── tests/
├── __init__.py
└── test_sorting.py # Unit-тесты для всех алгоритмов
python main.pyПри запуске скрипт предлагает выбрать источник данных для массива:
- Ввод чисел через пробел с клавиатуры.
- Чтение целых чисел из текстового файла
.txt, в котором числа разделены пробелами.
Исходный массив: [5, 7, 4, 3, 8, 2]
Пузырьковая сортировка (Bubble Sort): [2, 3, 4, 5, 7, 8]
Быстрая сортировка (Quick Sort): [2, 3, 4, 5, 7, 8]
Сортировка выбором (Selection Sort): [2, 3, 4, 5, 7, 8]
Сортировка вставками (Insertion Sort): [2, 3, 4, 5, 7, 8]
Сортировка слиянием (Merge Sort): [2, 3, 4, 5, 7, 8]
python -m pytest tests/ -vили без pytest:
python -m unittest discover -s tests -vТесты покрывают: пустой список, один элемент, отсортированный массив, обратный порядок, дубликаты, отрицательные числа, иммутабельность входных данных.
- Python 3.10+
- unittest (стандартная библиотека)
- Без внешних зависимостей
- Георгий Белянин (Georgy Belyanin)
- georgy.belyanin@gmail.com
Домашнее задание к уроку OD03 «Алгоритмы сортировки» курса «Программист на Python с нуля» (Zerocoder). Тема 13 — Основы алгоритмов и структур данных.