Если я правильно вас понимаю, у вас есть 2d структура массива, подобная этой:
{name,score}
{name,score}
{name,score}
{name,score}
, и вы хотите отсортировать по второму столбцу: Score.
Вместо реализацииэто в двумерном массиве, почему бы вам не создать объект с именем Player
, где у Player есть реализация:
public class Player{
private String name;
private int score;
Player(String name){
this.name = name;
}
public void setScore(int score){
this.score = score;
}
public int getScore(){
return score;
}
}
Теперь ваше табло теперь может быть реализовано в размерный массив примерно так:
Player[] scoreboard = new Player[playerSize];
Намного проще понять и прочитать.
Теперь, чтобы отсортировать этот массив, вы можете реализовать собственный класс, который позволяет сравнивать два объекта:введите Player
class comparePlayer implements Comparator<Player>{
public int compare(Player a, Player b) {
if (a.getScore() < b.getScore()){
return -1;
}
else if (a.getScore() == b.getScore()){
return 0;
}
else{
return 1;
}
}
}
Теперь вы можете сортировать по баллам следующим образом ->
Arrays.sort(scoreboard,new comparePlayer());
Или, если вы действительно хотите использовать пузырьковую сортировку, вы можете реализовать это следующим образом:
int length = scoreboard.length;
for (int i = 0; i < length-1; i++){
for (int j = 0; j < length-i-1; j++){
if (scoreboard[j].getScore() > scoreboard[j+1].getScore()){
Player temp = scoreboard[j];
scoreboard[j] = scoreboard[j+1];
scoreboard[j+1] = temp;
}
}
}