需求
首先按金牌数排序,金牌数相同按银牌数排序,银牌数也相同按铜牌数排序
解法一:for循环+if判断
public static int[][] changeNum(int[][] arr ){
for(int i=0;i<arr.length;i++){
for(int j=i+1;j<arr.length;j++){
if(arr[i][0]<arr[j][0]){
int temp[] = arr[j];
arr[j] = arr[i];
arr[i] = temp;
}else if(arr[i][0]==arr[j][0]){
if(arr[i][1]<arr[j][1]){
int temp[] = arr[j];
arr[j] = arr[i];
arr[i] = temp;
}else if(arr[i][1]==arr[j][1]){
if(arr[i][2]<arr[j][2]){
int temp[] = arr[j];
arr[j] = arr[i];
arr[i] = temp;
}
}
}
}
}
return arr;
}
解法二:Arrays.sort
public class Sort {
public static void main(String[] args) {
Sort sort = new Sort();
int n = 10;
int[][] data = new int[n][3];
Random random = new Random();
for (int i = 0; i < n; i++) {
data[i][0] = random.nextInt(20);
data[i][1] = random.nextInt(20);
data[i][2] = random.nextInt(20);
}
sort.test(data);
for (int[] datum : data) {
System.out.println(Arrays.toString(datum));
}
}
void test(int[][] data) {
Arrays.sort(data, ((o1, o2) -> {
if (o1[0] == o2[0]) {
if (o1[1] == o2[1]) {
return o2[2] - o1[2];
}
return o2[1] - o1[1];
}
return o2[0] - o1[0];
}));
}
}