Задание 3. Сортировки 2
3.1 Сортировка подсчетом
Дан массив из N элементов, которые принимают значения от 0 до 127. Отсортируйте этот массив в порядке возрастания элементов.
Входные данные
В первой строке число — количество элементов в массиве.
Во второй строке — массив чисел разделенных пробелом. Каждое число в диапазоне [0, 127]
.
16
124 68 57 0 93 60 24 71 125 70 87 83 105 34 30 15
Выходные данные
Вывести упорядоченный по возрастанию массив чисел через пробел.
0 15 24 30 34 57 60 68 70 71 83 87 93 105 124 125
Шаблон кода
import java.util.List;
public class CountingSort implements Sorting<Integer> {
@Override
public void sort(List<Integer> nums) {
// TODO
}
}
3.2 Цифровая сортировка
Дан массив из N чисел, каждое из которых — это 20-разрядное число в десятичной системе счисления. Реализуйте сортировку по возрастанию этих чисел.
Требуется реализовать цифровую(radix) сортировку.
Входные данные
4
19446744073709551657
18446744073709551616
18446744073709551629
18446744073709551633
Выходные данные
18446744073709551616
18446744073709551629
18446744073709551633
19446744073709551657
Шаблон кода
import java.math.BigInteger;
import java.util.List;
public class RadixSort implements Sorting<BigInteger> {
@Override
public void sort(List<BigInteger> nums) {
// TODO
}
}
3.3 Сохранение обобщения
Все сортировки 2 и 3 блока реализовывали шаблонный интерфейс Sorting
, заменяя в реализациях шаблонный тип на какой-то конкретный. В этой задаче сделайте новую реализацию любой из сортировок этих блоков, в которой сохранится шаблонный тип, а значит возможность сортировать любой тип, который реализует стандартный интерфейс Comparable
.
Протестируйте такую реализацию сортировки разных типах данных, например:
- Integer
- String
- LocalDateTime
- Student (из задачи 2.3)
- UUID