Нужно напечатать значения массива, параллельного тому, который я отсортировал с помощью пузырьковой сортировки.

У меня есть школьный проект, в котором я должен сделать приложение для проката автомобилей в BlueJ с использованием Java. Для одной части у меня есть 2 массива, один для цены и один для названия автомобиля. Мне нужно вывести название автомобиля в порядке убывания цены. Мне удалось отсортировать массив цен в порядке убывания с помощью пузырьковой сортировки, но я не могу понять, как напечатать название автомобиля при сортировке массива price . Пожалуйста помоги.

String carModel[] = {"A", "B", "C"}; //Names of cars
int costPerDay[] = {100, 75, 250}; //Rental cost per day
for(int x = 0; x < costPerDay.length-1; x++) { //Sort the Cost Per Day Array in descending order using bubble sort 
    for(int j = x + 1; j < costPerDay.length; j++) {
        if(costPerDay[x] < costPerDay[j]) {
            int t = costPerDay[x];
            costPerDay[x] = costPerDay[j];
            costPerDay[j] = t;
        }
    }
}

Это фрагмент кода. Мне нужно вывести названия автомобилей в порядке убывания их соответствующей стоимости.

Заранее спасибо!


person adam lion    schedule 25.07.2017    source источник
comment
Создайте один POJO и массив этого типа, а затем отсортируйте этот массив. Кроме того, каждый раз, когда вы меняете costPerDay, также меняйте местами carModel.   -  person Elliott Frisch    schedule 25.07.2017


Ответы (2)


Для этого есть хитрость. Используйте другой массив, который указывает порядок.

    String carModel[] = {"A", "B", "C"}; //Names of cars
    int costPerDay[] = {100, 75, 250}; //Rental cost per day
    // Here's the trick - use an order array.
    int order[] = {0,1,2}; 
    for(int x = 0; x < costPerDay.length-1; x++){ //Sort the Cost Per Day Array in descending order using bubble sort 
        for(int j = x + 1; j < costPerDay.length; j++){
            if(costPerDay[order[x]] < costPerDay[order[j]]){
                int t = order[x];
                order[x] = order[j];
                order[j] = t;
            }
        }
    }    

Теперь вы можете печатать с помощью carModel[order[i]], как я здесь с costPerDay[order[x]].

person OldCurmudgeon    schedule 25.07.2017

person    schedule
comment
Большое спасибо! Я ломал голову над такой простой вещью! Только одно в последней части должно быть не carModel.length-1 а только carModel.length - person adam lion; 25.07.2017