Skip to content

Latest commit

 

History

History

practice_1.4

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

Практическая работа №4 "Алгоритмы сортировки"

Реализовать консольную утилиту сортировки данных.

Предусмотреть:

  1. работу с числовыми данными
  2. работу с текстовыми данными
  3. сортировку по неубыванию/невозрастанию
  4. чтение и запись данных в файл

Реализовать возможность визуализации (по шагам) сортировки списка заданного размера и заполненного случайным образом.

Пример:

Шейкерная сортировка, shaker sort

Алгоритмы:

  1. Timsort
  2. Сортировка слиянием
  3. Быстрая сортировка
  4. Плавная сортировка
  5. Интроспективная сортировка

Требования к реализации

Реализуйте модуль 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]

Методика оценивания

Оценка выставляется в соответствии со следующими требованиями:

  1. Общие требования:
    • код работы проходит проверку утилитой pylint с конфигурационным файлом .pylintrc.
    • код работы успешно проходит тесты, если таковые имеются.
    • наличие документации к модулям, функциям, классам и методам.
    • наличие аннотации типов.
  2. На оценку 3 балла реализовать:
    • пункт 1;
    • сортировку по неубыванию;
    • визуализация не требуется.
  3. На оценку 4 балла дополнительно реализовать:
    • пункт 2;
    • сортировку по невозрастанию;
    • визуализация не требуется.
  4. На оценку 5 балла:
    • реализовать все методы, указанные в описании к работе.

Полезные материалы