奥运金牌旁行榜

我的算法

比较低效率的一种方法
二维数组{{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];
            }
        });
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值