abstract class Sort {
String name;
Sort(String name) {
this.name = name;
}
abstract int[] apply(int[] arr);
}
class BubbleSort extends Sort {
BubbleSort() {
super("Пузырьком");
}
int[] apply(int[] arr) {
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
int t = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = t;
}
}
}
return arr;
}
}
class InsertionSort extends Sort {
InsertionSort() {
super("Вставками");
}
int[] apply(int[] arr) {
for (int i = 1; i < arr.length; i++) {
int x = arr[i];
int j = i - 1;
while (j >= 0 && arr[j] > x) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = x;
}
return arr;
}
}
public class Main {
public static void main(String[] args) {
Sort a = new BubbleSort();
Sort b = new InsertionSort();
int[] x = {5, 3, 1, 4, 2};
int[] y = {9, 7, 6, 8};
System.out.println(a.name);
System.out.println(java.util.Arrays.toString(a.apply(x)));
System.out.println(b.name);
System.out.println(java.util.Arrays.toString(b.apply(y)));
}
}