奥运金牌旁行榜"/>
奥运金牌旁行榜
奥运金牌旁行榜
- 我的算法
- 比较简单的做法
- Arrays.sort自定义排序规则
我的算法
比较低效率的一种方法
二维数组{{1,2,3},{2,3,1}}
三次外层循环从最后一位开始循环排序,排序内部(如果后面比前面大,才交换)
static void test(int [][] data){int[] sign = new int[data.length];for (int j = 2;j>=0;j--){for (int i = 0; i < data.length; i++) {sign[i] = data[i][j];}BubbleSort(sign,data);}for (int i = 0; i < data.length; i++) {System.out.println(Arrays.toString(data[i]));}}public static void BubbleSort(int[] arr,int [][] data) {int temp;//定义一个临时变量int[] temp1 = new int[data.length];for(int i=0;i<arr.length-1;i++){//冒泡趟数for(int j=0;j<arr.length-i-1;j++){if(arr[j+1]>arr[j]){temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;temp1 = data[j];data[j] = data[j+1];data[j+1] = temp1;}}}}
比较简单的做法
只需要两层循环就可以实现该功能
通过if else if实现判断 如果内层循环走完 flag发生了改变 就交换数组
static void miaoA(int [][] data){for (int i = 0; i < data.length; i++) {int flag = i;for (int j = i + 1;j< data.length;j++){if (data[flag][0]<data[j][0]){flag = j;}else if (data[flag][0] == data[j][0] && data[flag][1] < data[j][1]){flag = j;}else if (data[flag][0] == data[j][0] && data[flag][1] == data[j][1] && data[flag][2] < data[j][2]){flag = j;}}if (flag != i){}}}
Arrays.sort自定义排序规则
利用Arrays.sort自定义排序规则(类似于上一个方法)
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];}});
更多推荐
奥运金牌旁行榜
发布评论