Сортировка массива объектов по убыванию

Помогите пожалуйста. Пытаюсь сделать сортировку выбором массива объектов по убыванию, через 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;
        }
    }
}
→ Ссылка