临冬城的冰原狼 2018-11-10 09:12 采纳率: 0%
浏览 2115

java5*5二维数组按对角线排序输出

int[][] Sort(int[][] input)
测试用例:
输入:
[1] [3] [2] [4] [5]
[6] [7] [9] [8] [10]
[11] [13] [12] [14] [15]
[17] [16] [18] [19] [20]
[22] [24] [23] [21] [25]
输入乱序

输出:
[11] [7] [4] [2] [1]
[16] [12] [8] [5] [3]
[20] [17] [13] [9] [6]
[23] [21] [18] [14] [10]
[25] [24] [22] [19] [15]
注意输出的数字是沿对角排序, 注意处理2维数组的下标.
输入可以是hard code的常量,如果是这样,请将输入也打印到控制台.

  • 写回答

1条回答 默认 最新

  • Italink 2018-11-10 11:50
    关注

    我之前用C写过这个,java也一样,就是先水平排序,再垂直排序,再水平,这样往复直到没有元素变动,没在电脑旁,不方便写,你可以看一下思路

     int tmp;          //中间值,用于交换
        int key = 0;      //检测是否有变动
        while (key == 0) {
            key = 1;    //初始化为1
            for (int i = 0; i < row; i++) {     //行排序(冒泡)
                for (int j = 0; j < col; j++) {
                    for (int k = j + 1; k < col; k++) {
                        if (a[i][j] > a[i][k]) {
                            key = 0;     //进行了交换,即有元素变动
                            tmp = a[i][j];
                            a[i][j] = a[i][k];
                            a[i][k] = tmp;
                        }
                    }
                }
            }
            for (int i = 0; i < col; i++) {     //列排序(冒泡)
                for (int j = 0; j < row; j++) {
                    for (int k = j + 1; k < row; k++) {
                        if (a[j][i] > a[k][i]) {
                            key = 0;    //同上
                            tmp = a[j][i];
                            a[j][i] = a[k][i];
                            a[k][i] = tmp;
                        }
                    }
                }
            }
        }
    
    评论

报告相同问题?

悬赏问题

  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作