Ребята, добрый день! Помогите пожалуйста отсортировать массив на сначала чётные в порядке убывания, а потом не чётные в порядке убывания методом пузырька. Первое задание на сортировку массива от большего к меньшему я сделал, а вот с чёт-нечет запутался совсем.
public class HomeWork_09_08 {
public static void main(String[] args) {
int[] ar = { 20, 11, 10, 19, 12, 14, 18, 16, 13, 17, 15 };
minToEnd(ar);
sortBubble(ar);
for (int x : ar) {
System.out.print(x + " ");
}
evenToEnd(ar);
for (int e : ar) {
System.out.print(e + " ");
}
}
public static boolean minToEnd(int[] ar) {
int temp = 0;
boolean res = false;
for (int i = 0; i < ar.length - 1; i++) {
if (ar[i] < ar[i + 1]) {
temp = ar[i];
ar[i] = ar[i + 1];
ar[i + 1] = temp;
res = true;
}
}
return res;
}
public static void sortBubble(int[] ar) {
boolean res = false;
do {
res = minToEnd(ar);
} while (res != false);
}
// Ниже в методе запутался совсем. Наверное нужно было задать %2, чтобы найти нечетные числа?
//Нужно сделать таким же методом как написал выше, только чтобы сначала на консоле вывелись чётные числа по убыванию, а за ними нечётные по убыванию
//20 18 16 14 12 10 19 17 15 13 11 - такой должен быть результат
public static boolean evenToEnd(int[] ar) {
int temp = 0;
boolean res = false;
for (int i = 0; i < ar.length - 1; i++) {
if (ar[i] < ar[i + 1]) {
temp = ar[i];
ar[i] = ar[i + 1];
ar[i + 1] = temp;
res = true;
}
}
}
}
Вот, вроде бы получилось отсортировать на чёт и нечет, а как сделать, чтобы они по убыванию были?
20 18 16 14 12 10 19 17 15 13 11 - такой должен быть результат
public static boolean evenToEnd(int[] ar) {
boolean res = false;
int left = 0, right = ar.length - 1;
while (left < right) {
while (ar[left] % 2 == 0 && left < right)
left++;
while (ar[right] % 2 == 1 && left < right)
right--;
if (left < right) {
int temp = ar[left];
ar[left] = ar[right];
ar[right] = temp;
left++;
right--;
res = true;
}
}
return res;
}