为了账号安全,请及时绑定邮箱和手机立即绑定

Java将二维数组的行排序为升序,将列排序为降序

Java将二维数组的行排序为升序,将列排序为降序

catspeake 2022-01-06 17:55:43
拜托,有人可以帮助我,我需要按降序对二维数组列进行排序吗?我使用此代码将数组行按升序排序,但现在必须将列按降序排序。// Initialize arraystatic int[][] sortArray = new int[7][7];public static void main(String args[]) {    //initialize array values with random numbers    for (int i = 0; i < sortArray.length; i++) {        for (int j = 0; j < sortArray[i].length; j++) {            sortArray[i][j] = (int) (Math.random() * 100);        }    }    System.out.println("\n" + "Before sorting");    displayArray();    //Print out sorted array    for (int i = 0; i < sortArray.length; i++) {        bubbleSort(sortArray[i]);    }    System.out.println("\n" + "Array rows in ascending order");    displayArray();    //Print out sorted columns of array    for (int i = 0; i < sortArray.length; i++) {        sortSort(sortArray[i]);    }    System.out.println("\n" + "Array column in descending order");    displayArray();}// Sort rows into ascending orderpublic static void bubbleSort(int[] numArray) {    int n = numArray.length;    int temp = 0;    for (int i = 0; i < n; i++) {        for (int j = 1; j < (n - i); j++) {            if (numArray[j - 1] > numArray[j]) {                temp = numArray[j - 1];                numArray[j - 1] = numArray[j];                numArray[j] = temp;            }        }    }}//Sort cols into descending orderpublic static void sortSort(int[] colArray) {    int n = colArray.length;    int temp = 0;    for (int i = 0; i < n; i++) {        for (int j = 1; j < (n - i); j++) {            if (colArray[j - 1] < colArray[j]) {                temp = colArray[j - 1];                colArray[j - 1] = colArray[j];                colArray[j] = temp;            }        }    }}
查看完整描述

3 回答

?
墨色风雨

TA贡献1853条经验 获得超6个赞

int[] colArray = new int[] { 2, 9, 4, 5};

int n = colArray.length;

int temp = 0;



for (int i = 0; i < n; i++) {

  for (int j = 1; j < (n - i); j++) {


      if (colArray[j - 1] > colArray[j]) {

          temp = colArray[j - 1];

          colArray[j - 1] = colArray[j];

          colArray[j] = temp;

      }


  }

 }

 Arrays.stream(colArray).forEach(data -> System.out.println(data));


查看完整回答
反对 回复 2022-01-06
?
开满天机

TA贡献1786条经验 获得超13个赞

只需更换


if (colArray[j - 1] < colArray[j]) {

...

}

和:


if (colArray[j - 1] > colArray[j]) {

...

}

> 代替 <


查看完整回答
反对 回复 2022-01-06
?
不负相思意

TA贡献1777条经验 获得超10个赞

首先,你的数组不是 2D :),只是因为数组的每个元素都有一个像 Arr[0] 这样的数字被调用,并且它的值是例如 5 它并不意味着它的 2D。


但是为了将数组按降序排序,您可以使用以下代码:


            int n = intArray.length;

            int temp = 0;


            for(int i=0; i < n; i++){

                    for(int j=1; j < (n-i); j++){


                            if(intArray[j-1] < intArray[j]){

                                    //swap the elements!

                                    temp = intArray[j-1];

                                    intArray[j-1] = intArray[j];

                                    intArray[j] = temp;

                            }


                    }

            }


查看完整回答
反对 回复 2022-01-06
  • 3 回答
  • 0 关注
  • 319 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信