2 回答

TA貢獻1780條經驗 獲得超5個贊
如果我理解正確,你有一個像這樣的二維數(shù)組結構:
{name,score}
{name,score}
{name,score}
{name,score}
并且您想根據(jù)第二列進行排序:分數(shù)。
與其在二維數(shù)組中實現(xiàn)它,不如創(chuàng)建一個名為 Player 的對象
Player 有一個實現(xiàn):
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;
}
}
現(xiàn)在您的記分牌現(xiàn)在可以實現(xiàn)為一個一維數(shù)組,如下所示:
Player[] scoreboard = new Player[playerSize];
更容易理解和閱讀。
現(xiàn)在要對該數(shù)組進行排序,您可以實現(xiàn)一個自定義類,該類允許您比較兩個 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;
}
}
}
現(xiàn)在你可以像這樣按分數(shù)排序 ->
Arrays.sort(scoreboard,new comparePlayer());
或者如果你真的想使用冒泡排序,那么你可以像這樣實現(xiàn)它:
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;
}
}
}

TA貢獻1883條經驗 獲得超3個贊
在這種情況下,您可以通過修改來實現(xiàn)冒泡排序以比較重要的值。例子:
static void bubbleSort(String[][] arr) {
int arrayLength = arr.length;
for (int i = 0; i < arrayLength; i++) {
for (int j = 1; j < (arrayLength - i); j++) {
String nameTemp, scoreTemp;
int leftValue, rightValue;
leftValue = Integer.valueOf(arr[j - 1][1]);
rightValue = Integer.valueOf(arr[j][1]);
if (leftValue > rightValue) {
//swap elements
nameTemp = arr[j - 1][0];
scoreTemp = arr[j - 1][1];
arr[j - 1][0] = arr[j][0];
arr[j - 1][1] = arr[j][1];
arr[j][0] = nameTemp;
arr[j][1] = scoreTemp;
}
}
}
}
然后好吧,你想要數(shù)組的最后一個索引,因為它是升序排序的。
添加回答
舉報