Задание 2. Сортировки
2.1 Сортировка вставками (Insertions sort)
Дан массив чисел. Отсортировать в порядке возрастания алгоритмом сортировки вставками.
Входные данные
Входные данные подаются на System.in.
В первой строке содержится число N (1 <= N <=100000) — количество элементов в массиве. Во второй строке находятся N целых чисел, по модулю не превосходящих 10^9.
10
1 2 5 1 1 2 6 8 9 3
Выходные данные
В System.out вывести отсортированный массив числе по возрастанию через пробел.
1 1 1 2 2 3 5 6 8 9
Шаблон кода
import java.util.List;
// Этот интерфейс будет общим для всех остальных сортировок
public interface Sorting<T extends Comparable<T>> {
void sort(List<T> nums);
}
// НЕ ДЕЛАЙТЕ это всё в одном файле 🙏🙏🙏
import java.util.List;
public class InsertionSort implements Sorting<Integer> {
@Override
public void sort(List<Integer> nums) {
// TODO
}
}
2.2 Сортировка слиянием (Merge sort)
Дан массив чисел. Отсортировать в порядке возрастания алгоритмом сортировки слиянием.
Входные данные
Входные данные подаются на System.in.
В первой строке содержится число N (1 <= N <=100000) — количество элементов в массиве. Во второй строке находятся N целых чисел, по модулю не превосходящих 10^9.
10
1 2 5 1 1 2 6 8 9 3
Выходные данные
В System.out вывести отсортированный массив числе по возрастанию через пробел.
1 1 1 2 2 3 5 6 8 9
Шаблон кода
import java.util.List;
public class MergeSort implements Sorting<Integer> {
private void slice(List<Integer> nums, int start, int end) {
// TODO
}
private void merge(List<Integer> nums, int start, int middle, int end) {
// TODO
}
@Override
public void sort(List<Integer> nums) {
slice(nums, 0, nums.size() - 1);
}
}
2.3 Сортировка структур
Упорядочить массив Студентов по возрастанию возраста и в лексикографическом порядке имен, применив сортировку дважды. В варианте на C++ можно было воспользоваться сортировками из стандартной библиотеки, для Java вам придётся реализовать их самостоятельно. Найдите, какие сортировки являются стабильными и нестабильными и реализуйте их.
Входные данные
Входные данные подаются на System.in.
В первой строке содержится число N (1 <= N <=100000) — количество элементов в массиве. Далее N строк. В каждой строке сначала идет строка — имя студента, и через пробел чисдло — возраст студента.
4
Vasya 21
Vasya 19
Anton 22
Antonio 23
Выходные данные
В System.out вывести отсортированный массив студентов. Каждый студент на новой строке. Сначала имя, потом возраст через пробел.
Anton 22
Antonio 23
Vasya 19
Vasya 21
Шаблон кода
public class Student {
private final String name;
private final int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
// НЕ ДЕЛАЙТЕ это всё в одном файле 🙏🙏🙏
import java.util.List;
public class StudentSort implements Sorting<Student> {
@Override
public void sort(List<Student> students) {
// TODO
}
}