Java 对左对角线排序的二维数组

Java 对左对角线排序的二维数组

在数据结构领域中,向量是特定对象的可增长类数组。向量类属于遗留类,与集合完全兼容。在java.util包中,List接口可以使用这里列出的所有方法。初始容量为10,通用方法为−

Vector<E> v = new Vector<E>();

compare()方法接受两个参数,并使用Java环境逻辑将它们相互比较。

按左对角线对2D数组进行排序的算法

下面是按左对角线对2D数组进行排序的特定算法。

  • 步骤1 – 开始。

  • 步骤2 – 逐个遍历所有左对角线。

  • 步骤3 – 在向量中添加左对角线上的元素。

  • 步骤4 – 处理这些向量。

  • 步骤5 – 再次对它们进行排序。

  • 步骤6 – 将它们从向量推回左对角线。

  • 步骤7 – 删除所有向量以使集合为空。

  • 步骤8 – 重新开始排序。

  • 步骤9 – 重复所有步骤。

  • 步骤10 – 逐步完成所有左对角线。

  • 步骤11 – 终止该过程。

按左对角线对2D数组进行排序的语法

这里有一些特定的语法来按左对角线对一些2D数组进行排序,如下所示:

A. removeAll():

语法:

Vector.removeAll(Vectors As Value)
It is used to remove all the elements from the vector.

B. Collections.sort():

语法:

Collections.sort(Vectors As Value)
This method is used to sort the vector in a process.

C. add():

语法:

Vector.add(Value as the integer value)
It is used to add some elements in the vector.

D. get():

语法:

Vector.get(3);
This method used to store the vector element at a pricular index.

在这些特定的语法中,我们尝试对左对角线上的一些2D数组进行排序。

对2D数组进行左对角线排序的方法

  • 方法1 – Java程序,对2D数组进行左对角线排序

  • 方法2 – Java程序,按递减顺序对2D矩阵进行对角线排序

  • 方法3 – Java程序,对2D矩阵进行对角线排序并获取其总和

Java程序,对2D数组进行左对角线排序

在这段Java代码中,我们尝试以一般方式对2D数组进行左对角线排序。

示例1

import java.io.*;
import java.lang.*;
import java.util.*;
public class ARBRDD {
    public static void main(String[] args)
      throws java.lang.Exception{
      int[][] arr = { { 5, 2, 0, 7, 1 }, { 3, 4, 2, 9, 14 },
         { 5, 1, 3, 5, 2 }, { 4, 2, 6, 2, 1 },
         { 0, 6, 3, 5, 1 }, { 1, 4, 7, 2, 8 } };
      System.out.println("Matrix without sorting data is here ----> \n");
      for (int i = 0; i < 5; i++) {
         for (int j = 0; j < 5; j++) {
            System.out.print(arr[i][j] + " ");
         }
         System.out.println();
      }

      Vector<Integer> v = new Vector<>();
      for (int i = 0; i < 5; i++) {
         v.add(arr[i][i]);
      }
      Collections.sort(v);
      for (int j = 0; j < 5; j++) {
         arr[j][j] = v.get(j);
      }

      System.out.println("Matrix after sorting data is here ----> \n");

      for (int i = 0; i < 5; i++) {
         for (int j = 0; j < 5; j++) {
            System.out.print(arr[i][j] + " ");
         }
         System.out.println();
      }
   }
}

输出

Matrix without sorting data is here ----> 

5 2 0 7 1 
3 4 2 9 14 
5 1 3 5 2 
4 2 6 2 1 
0 6 3 5 1 
Matrix after sorting data is here ----> 

1 2 0 7 1 
3 2 2 9 14 
5 1 3 5 2 
4 2 6 4 1 
0 6 3 5 5

Java程序按照降序对2D矩阵进行对角线排序

在这个Java代码中,我们尝试展示如何按照降序对2D矩阵的左对角线进行排序。

示例2

import java.io.*;
import java.util.*;

public class ARBRDD {
    public static void
    diagonalSort(ArrayList<ArrayList<Integer> > mat){

      int row = mat.size();
      int col = mat.get(0).size();
      ArrayList<ArrayList<Integer> > Neg = new ArrayList<ArrayList<Integer> >();
      ArrayList<ArrayList<Integer> > Pos = new ArrayList<ArrayList<Integer> >();

      int i, j;

      for (i = 0; i < row; i++) {
        ArrayList<Integer> temp
            = new ArrayList<Integer>();
        Neg.add(temp);
      }

      for (j = 0; j < col; j++) {
        ArrayList<Integer> temp
            = new ArrayList<Integer>();
        Pos.add(temp);
      }
      for (i = 0; i < row; i++) {
        for (j = 0; j < col; j++) {
            if (j < i) {
                Neg.get(i - j).add(mat.get(i).get(j));
            }
            else if (i < j) {
                Pos.get(j - i).add(mat.get(i).get(j));
            }
            else {
                Pos.get(0).add(mat.get(i).get(j));
            }
        }
      }

      for (i = 0; i < row; i++) {
        Collections.sort(Neg.get(i));
        ;
      }
      for (i = 0; i < col; i++) {
        Collections.sort(Pos.get(i));
        ;
      }
      for (i = 0; i < row; i++) {
        for (j = 0; j < col; j++) {
            if (j < i) {
                int d = i - j;
                int l = Neg.get(d).size();
                mat.get(i).set(j,
                        Neg.get(d).get(l - 1));
                Neg.get(d).remove(l - 1);
            }
            else if (i < j) {
                int d = j - i;
                int l = Pos.get(d).size();
                mat.get(i).set(j,
                        Pos.get(d).get(l - 1));
                Pos.get(d).remove(l - 1);
            }
            else {
                int l = Pos.get(0).size();
                mat.get(i).set(j,
                        Pos.get(0).get(l - 1));
                Pos.get(0).remove(l - 1);
            }
        }
      }

      for (i = 0; i < row; i++) {
        for (j = 0; j < col; j++) {
            System.out.print(mat.get(i).get(j) + " ");
        }
        System.out.println();
      }
    }
    public static void main(String[] args){
      ArrayList<ArrayList<Integer> > arr
        = new ArrayList<ArrayList<Integer> >();
      ArrayList<Integer> row1 = new ArrayList<Integer>();
      row1.add(10);
      row1.add(2);
      row1.add(3);
      arr.add(row1);

      ArrayList<Integer> row2 = new ArrayList<Integer>();
      row2.add(4);
      row2.add(5);
      row2.add(6);
      arr.add(row2);

      ArrayList<Integer> row3 = new ArrayList<Integer>();
      row3.add(7);
      row3.add(8);
      row3.add(9);
      arr.add(row3);

      diagonalSort(arr);

    }
}

输出

10 6 3 
8 9 2 
7 4 5

Java程序对2D矩阵进行对角线排序,并获得其总和

在这段Java代码中,我们尝试展示如何对2D数组矩阵按照左对角线进行排序,并获得其总和。

示例3

import java.util.*;

public class ARBRDD{  
   public static void main(String args[]){
      Scanner sc = new Scanner(System.in);
      int i,j,row,col,sum=0;
      System.out.println("Enter the number of rows ---->:");
      row = sc.nextInt();
      System.out.println("Enter the number of columns---->:");
      col = sc.nextInt();

      int[][] mat = new int[row][col];

      System.out.println("Enter the elements of the matrix: -----@") ;
      for(i=0;i<row;i++){ 
          for(j=0;j<col;j++){ 
            mat[i][j] = sc.nextInt();
          }
      }
      System.out.println("####The elements of the matrix we get####") ;
      for(i=0;i<row;i++){ 
         for(j=0;j<col;j++){ 
            System.out.print(mat[i][j]+"\t");
         }
         System.out.println("");
      }
      for(i=0;i<row;i++){ 
         for(j=0;j<col;j++){ 
            if(i==j)  {
               sum = sum + mat[i][j];
            }
         }
      }
      System.out.printf("Sum of the diagonal elements of the matrix is here = "+sum) ;
   }    
}

输出

Enter the number of rows ---->:
3
Enter the number of columns---->:
3
Enter the elements of the matrix: -----@
1 2 3
4 5 6
7 8 9 
####The elements of the matrix####
1   2   3   
4   5   6   
7   8   9   
Sum of the diagonal elements of the matrix is here = 15

结论

在本文中,我们详细讨论了二维数组排序问题。今天我们使用了各种排序方法来通过上述的语法和算法解决这个问题。希望通过本文,您能够对如何使用Java环境对左对角线问题进行二维数组排序有一个全面的了解。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程