List<Integer> list = new ArrayList<>(); for (int i = 0; i < array.length; i++) { list.add(array[i]); } Collections.sort(list); Collections.reverse(list); for (int i = 0; i < array.length; i++) { array[i]=list.get(i); } Зачем мы здесь копировали массив? Можно ли было работать сразу с array?