Реализовать консольную утилиту сортировки данных.
Предусмотреть:
- работу с числовыми данными
- работу с текстовыми данными
- сортировку по неубыванию/невозрастанию
- чтение и запись данных в файл
Реализовать возможность визуализации (по шагам) сортировки списка заданного размера и заполненного случайным образом.
Пример:
- Timsort
- Сортировка слиянием
- Быстрая сортировка
- Плавная сортировка
- Интроспективная сортировка
Реализуйте модуль my_sort.py
, где должна быть функция
my_sort
с сигнатурой:
my_sort(array: list, reverse: bool=False,
key: Optional[Callable]=None, cmp: Optional[Callable]=None) -> list
Описание аргументов:
array
: сортируемый списокreverse
: флаг определяющий вариант сортировки:
False
- по неубыванию
True
- по невозрастаниюkey
: функция, вычисляющая значение, на основе которого будет производится сортировка. Должна принимать один аргумент и возвращать значение.cmp
: функция сравнения, должна принимать два аргумента и возвращать значение
В файле my_sort.py
размещен упрощенный шаблон функций, которые могут
понадобиться. В Файле test_my_sort.py
размещены тесты для проверки
решения. Тесты можно запустить с помощью модуля unittest
или pylint
.
Результатом работы функции должен быть новый список с отсортированными элементами.
Пример:
Исходный список: [2, -3, 5, 0, 5]
Результат: [-3, 0, 2, 5, 5]
Оценка выставляется в соответствии со следующими требованиями:
- Общие требования:
- код работы проходит проверку утилитой
pylint
с конфигурационным файлом.pylintrc
. - код работы успешно проходит тесты, если таковые имеются.
- наличие документации к модулям, функциям, классам и методам.
- наличие аннотации типов.
- код работы проходит проверку утилитой
- На оценку 3 балла реализовать:
- пункт 1;
- сортировку по неубыванию;
- визуализация не требуется.
- На оценку 4 балла дополнительно реализовать:
- пункт 2;
- сортировку по невозрастанию;
- визуализация не требуется.
- На оценку 5 балла:
- реализовать все методы, указанные в описании к работе.