Я создаю табло для игры, которую я создаю, но мне нужно сделать табло, которое сортирует баллы в порядке декодирования, используя алгоритм сортировки пузырьков. Однако соответствующие имена отсортированного списка баллов будут путаться. Я искал ответ, но они сделаны с 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]; }
}
Если вам действительно нужно это сделать, вы можете просто добавить другую временную переменную и поменять местами имена в то же самое время, когда вы поменяете результаты. то есть. просто дублируйте первые 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() для операторов печати.
Используйте объектно-ориентированное программирование. "Сложно" поддерживать параллельные массивы. Гораздо проще создать тип данных, скажем, Player
который содержит имя и оценку, а затем реализовать интерфейс Comparable
и сортировать на основе этого (или просто использовать свой собственный сортир для сортировки значений оценки объекта Player
).