Сортировка массива объектов по убыванию
Помогите пожалуйста. Пытаюсь сделать сортировку выбором массива объектов по убыванию, через compareTo, цикл и If но сортировка не получается. Класс Car` public class Car implements Comparable {
private String name;
public Car(String name) {
this.name = name;
}
@Override
public String toString() {
return "{" +
"name='" + name + '\'' +
'}';
}
@Override
public int compareTo(Car car) {
return (this.name.compareTo(car.name));
}
}` Класс Main
public class Main {
public static void main(String[] args) {
Car[] cars = new Car[7];
cars[0] = new Car("Skoda");
cars[1] = new Car("FIAT");
cars[2] = new Car("FORD");
cars[3] = new Car("MAN");
cars[4] = new Car("KIA");
cars[5] = new Car("BMW");
cars[6] = new Car("LADA");
Car max = new Car("");
Car max1 = new Car("");
for (int i = 0; i < cars.length; i++) {
max = cars[i];
for (int j = i + 1; j < cars.length; j++) {
int q = max.compareTo(cars[j]);
if (q <=0) {
max = cars[j];
max1 = cars[i];
cars[j] = max1;
cars[i] = max;
} else if(q>0){
max = cars[i];
max1 = cars[j];
cars[i] = max1;
cars[j] = max;
}
}
}
for (int i = 0; i < cars.length; i++) {
System.out.println(cars[i]);
}
}
}
Ответы (2 шт):
Автор решения: Aziz Umarov
→ Ссылка
Так думаю отсортируется
public static void main(String[] args) {
Car[] cars = new Car[7];
cars[0] = new Car("Skoda");
cars[1] = new Car("FIAT");
cars[2] = new Car("FORD");
cars[3] = new Car("MAN");
cars[4] = new Car("KIA");
cars[5] = new Car("BMW");
cars[6] = new Car("LADA");
for (int i = 0; i < cars.length; i++) {
for (int j = 0; j < cars.length - i - 1; j++) {
int q = cars[j].compareTo(cars[j + 1]);
if (q < 0) {
Car temp = cars[j + 1];
cars[j + 1] = cars[j];
cars[j] = temp;
}
}
}
for (int i = 0; i < cars.length; i++) {
System.out.println(cars[i]);
}
}
выхлоп такой
{name='Skoda'}
{name='MAN'}
{name='LADA'}
{name='KIA'}
{name='FORD'}
{name='FIAT'}
{name='BMW'}
Автор решения: the.cosmos
→ Ссылка
Сортировка выбором (Selection sort) массива строк по убыванию
public static void main(String[] args) {
String[] cars = {"FIAT", "FORD", "MAN", "KIA", "BMW", "LADA"};
// сортировка выбором по убыванию
selectionSort(cars);
// вывод
System.out.println(Arrays.toString(cars));
// [MAN, LADA, KIA, FORD, FIAT, BMW]
}
// сортировка выбором по убыванию
public static void selectionSort(String[] array) {
// обход всех подмножеств элементов массива
// (1-последний, 2-последний, 3-последний, ...)
for (int i = 0; i < array.length - 1; i++) {
// установить текущий элемент как максимум
int max = i;
// обход последующих элементов
// чтобы найти наибольший
for (int j = i + 1; j < array.length; j++) {
// если этот элемент больше,
// тогда это новый максимум
if (array[j].compareTo(array[max]) > 0) {
max = j;
}
}
// если максимальный элемент не равен
// текущему, тогда поменять их местами
if (max != i) {
String temp = array[i];
array[i] = array[max];
array[max] = temp;
}
}
}