Skip to content

ergon73/python-sorting-algorithms

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Алгоритмы сортировки на Python

Реализация пяти классических алгоритмов сортировки на чистом Python без внешних зависимостей.

Алгоритмы

  1. Bubble Sort — пузырьковая сортировка с оптимизацией диапазона проверки
  2. Quick Sort — быстрая сортировка методом «разделяй и властвуй»
  3. Selection Sort — сортировка выбором минимального элемента
  4. Insertion Sort — сортировка вставками со сдвигом элементов
  5. 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

При запуске скрипт предлагает выбрать источник данных для массива:

  1. Ввод чисел через пробел с клавиатуры.
  2. Чтение целых чисел из текстового файла .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 (стандартная библиотека)
  • Без внешних зависимостей

Автор

Контекст

Домашнее задание к уроку OD03 «Алгоритмы сортировки» курса «Программист на Python с нуля» (Zerocoder). Тема 13 — Основы алгоритмов и структур данных.

About

Реализация пяти классических алгоритмов сортировки на Python (Bubble, Quick, Selection, Insertion, Merge) с unit-тестами

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages