二维数组根据每个数组的元素排序(奥运奖牌排序)
方法一
public static void sort(int[][] a){
for(int i=0;i<a.length;i++){
int k=i;
for(int j=i+1;j<a.length;j++){
if(a[k][0]<a[j][0]){
k=j;
}else if(a[k][0]==a[j][0]&&a[k][1]<a[j][1]){
k=j;
}else if(a[k][0]==a[j][0]&&a[k][1]==a[j][1]&&a[k][2]<a[j][2]){
k=j;
}
}
if(k!=i){
int[] tmp=a[i];
a[i]=a[k];
a[k]=tmp;
}
System.out.println(Arrays.toString(a[i]));
}
}
方法二
public static void sort1(int[][] a){
for(int i=0;i<a.length;i++){
for(int j=i+1;j<a.length;j++){
if(a[i][0]<a[j][0]){
int temp[] = a[j];
a[j] = a[i];
a[i] = temp;
}else if(a[i][0]==a[j][0]){
if(a[i][1]<a[j][1]){
int temp[] = a[j];
a[j] = a[i];
a[i] = temp;
}else if(a[i][1]==a[j][1]){
if(a[i][2]<a[j][2]){
int temp[] = a[j];
a[j] = a[i];
a[i] = temp;
}
}
}
}
System.out.println(Arrays.toString(a[i]));
}
}
方法三
public static void sort2(int[][] a){
Arrays.sort(a, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
// TODO Auto-generated method stub
if(o1[0]!=o2[0]){
return o2[0]-o1[0];
}else if(o1[1]!=o2[1]){
return o2[1]-o1[1];
}else{
return o2[2]-o1[2];
}
}
});
System.out.println(Arrays.deepToString(a));
}
方法四
public static void sort2(int[][] a){
Arrays.sort(data,(o1,o2) -> {
if(o1[0]!=o2[0]){
return o2[0]-o1[0];
}else if(o1[1]!=o2[1]){
return o2[1]-o1[1];
}else{
return o2[2]-o1[2];
}
});
System.out.println(Arrays.deepToString(a));
}