2026-08-21 20:09:43 +04:00
|
|
|
|
# Техническое задание: сортировка слиянием
|
2026-08-21 19:02:34 +04:00
|
|
|
|
|
|
|
|
|
|
## Задача
|
|
|
|
|
|
|
2026-08-21 20:09:43 +04:00
|
|
|
|
Реализовать паттерн Strategy и собственный алгоритм сортировки слиянием объектов `Student`.
|
2026-08-21 19:02:34 +04:00
|
|
|
|
|
|
|
|
|
|
## Требования
|
|
|
|
|
|
|
|
|
|
|
|
1. Создать интерфейс `SortStrategy<T>` с методом:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
sort(MyList<T> list, Comparator<T> comparator)
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2026-08-21 20:09:43 +04:00
|
|
|
|
1. Создать класс `MergeSortStrategy<T>`, реализующий `SortStrategy<T>`.
|
2026-08-21 19:02:34 +04:00
|
|
|
|
|
2026-08-21 20:09:43 +04:00
|
|
|
|
2. Реализовать алгоритм сортировки слиянием самостоятельно.
|
2026-08-21 19:02:34 +04:00
|
|
|
|
|
2026-08-21 20:09:43 +04:00
|
|
|
|
3. Готовые методы сортировки Java не использовать.
|
2026-08-21 19:02:34 +04:00
|
|
|
|
|
2026-08-21 20:09:43 +04:00
|
|
|
|
4. Сортировка должна работать с `MyList<T>`.
|
2026-08-21 19:02:34 +04:00
|
|
|
|
|
2026-08-21 20:09:43 +04:00
|
|
|
|
5. Сортировка должна использовать переданный `Comparator<T>`.
|
|
|
|
|
|
|
|
|
|
|
|
6. Реализовать сортировку `Student` по каждому из трёх полей:
|
2026-08-21 19:02:34 +04:00
|
|
|
|
|
|
|
|
|
|
- `groupNumber`;
|
|
|
|
|
|
- `averageGrade`;
|
|
|
|
|
|
- `recordBookNumber`.
|
|
|
|
|
|
|
2026-08-21 20:09:43 +04:00
|
|
|
|
7. Создать отдельные компараторы:
|
2026-08-21 19:02:34 +04:00
|
|
|
|
|
|
|
|
|
|
- `StudentGroupComparator`;
|
|
|
|
|
|
- `StudentAverageGradeComparator`;
|
|
|
|
|
|
- `StudentRecordBookComparator`.
|
|
|
|
|
|
|
2026-08-21 20:09:43 +04:00
|
|
|
|
8. `MergeSortStrategy` не должен зависеть от класса `Student`.
|
2026-08-21 19:02:34 +04:00
|
|
|
|
|
|
|
|
|
|
## Результат
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
SortStrategy.java
|
2026-08-21 20:09:43 +04:00
|
|
|
|
MergeSortStrategy.java
|
2026-08-21 19:02:34 +04:00
|
|
|
|
|
|
|
|
|
|
StudentGroupComparator.java
|
|
|
|
|
|
StudentAverageGradeComparator.java
|
|
|
|
|
|
StudentRecordBookComparator.java
|
|
|
|
|
|
```
|