Не могу понять это валидатор просто не принимает или у меня все-таки где-то ошибка. Люди добрые, подскажите пожалуйста, по 4му пункту пролетаю, хотя по моим проверкам все работает.
package com.javarush.task.task26.task2601;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
/*
Почитать в инете про медиану выборки
*/
public class Solution {
public static void main(String[] args) {
// проверка
Integer[] array = new Integer[5];
array[0] = 13;
array[1] = 8;
array[2] = 15;
array[3] = 5;
array[4] = 17;
for (Integer integer : array) {
System.out.print(integer + " ");
} System.out.println();
for (Integer integer : sort(array)) {
System.out.print(integer + " ");
} System.out.println();
// проверка
}
public static Integer[] sort(Integer[] array) {
/*
медиана выборки - число, которое находится в середине этой выборки,
если его упорядочить по возрастанию
*/
Integer[] sortedArray = array;
Arrays.sort(sortedArray);
Integer median = 0;
if (array.length % 2 == 0) {
median = (sortedArray[sortedArray.length / 2] + sortedArray[sortedArray.length / 2 + 1]) / 2;
} else {
median = sortedArray[sortedArray.length / 2];
}
System.out.println(median);
ArrayList<Integer> list1 = new ArrayList<>(Arrays.asList(sortedArray));
ArrayList<Integer> list2 = new ArrayList<>();
for (int i = 0; i < list1.size(); i++) {
list1.set(i, list1.get(i) - median); // по модулю
}
Collections.sort(list1, new Comparator<Integer>() {
public int compare(Integer o1, Integer o2) {
return Math.abs(o1) - Math.abs(o2);
}
});
for (Integer integer1 : list1) {
for (Integer integer2 : sortedArray) {
//System.out.println(integer1 + " + " + median + " == " + integer2 + " (" + (integer1 + median) + ") ");
if (integer1 + median == integer2) {
list2.add(integer2);
break;
}
}
}
return list2.toArray(new Integer[0]);
}
}