Сортировка целочисленного массива при наличии массива String для табло

1

Я создаю табло для игры, которую я создаю, но мне нужно сделать табло, которое сортирует баллы в порядке декодирования, используя алгоритм сортировки пузырьков. Однако соответствующие имена отсортированного списка баллов будут путаться. Я искал ответ, но они сделаны с array.sort, который не является моим собственным алгоритмом сортировки. Пожалуйста, помогите мне сортировать оценки, пока правильные имена будут напечатаны рядом с ними.

пока скажем:

int[] scores={6,3,15,12};
String[] names={"player1","player2","player3","player4"};

public static void results(String [] names, int [] results) {
    int temp;
    boolean sorted=false;

    while(sorted==false) {
            sorted = true;
    for(int i=0; i<results.length-1; i++) {

        if(results[i] < results[i+1]) {
            temp = results[i];
            results[i]=results[i+1];
            results[i+1] = temp;

            sorted = false;}
        }

    }       
    for(int i=0; i<results.length; i++) {
        print("In position " + (i+1) + " is " + names[i] + " with " + results[i] + " points.");}    
}

public static void resultscalc(int [] score, int [] results) {
    for(int i=0; i<score.length; i++) {
        results[i] = score[i]; }
}
  • 0
    Вы должны использовать лучшую структуру данных, такую как карта. Или вы можете создать класс игрока, в котором есть переменные для имени и счета, а затем просто отсортировать по количеству очков.
Теги:
arrays
sorting
bubble-sort

2 ответа

0
Лучший ответ

Если вам действительно нужно это сделать, вы можете просто добавить другую временную переменную и поменять местами имена в то же самое время, когда вы поменяете результаты. то есть. просто дублируйте первые 3 строки в инструкции if.

Но было бы лучше сделать класс Player с именем и результатом, а затем просто отсортировать массив игроков. Будет выглядеть примерно так

if(players[i].getResult() < players[i+1].getResult()) {
        temp = players[i];
        players[i]=players[i+1];
        players[i+1] = temp;

        sorted = false;}
    }

а затем просто игроки [i].getName() для операторов печати.

0

Используйте объектно-ориентированное программирование. "Сложно" поддерживать параллельные массивы. Гораздо проще создать тип данных, скажем, Player который содержит имя и оценку, а затем реализовать интерфейс Comparable и сортировать на основе этого (или просто использовать свой собственный сортир для сортировки значений оценки объекта Player).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню