Java程式用於對二維陣列的列進行排序


在資料結構領域,向量是一個特定物件的可增長類陣列。向量類屬於遺留類,與集合完全相容。在java.util包中,List介面可以使用此處列出的所有方法。初始容量為10,常用方法為:

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

compare()方法接受兩個引數,然後使用Java環境邏輯進行比較。

在今天的這篇文章中,我們將學習跨列對二維陣列進行排序的過程。

跨列排序二維陣列的演算法:

這是一個跨列排序二維陣列的特定演算法。

  • 步驟1 - 開始。

  • 步驟2 - 依次遍歷所有列。

  • 步驟3 - 將該列的元素新增到向量中。

  • 步驟4 - 處理這些向量。

  • 步驟5 - 再次對它們進行排序。

  • 步驟6 - 將它們從向量推回到列中。

  • 步驟7 - 刪除所有向量以使集合為空。

  • 步驟8 - 重新開始排序。

  • 步驟9 - 再次重複所有步驟。

  • 步驟10 - 按步驟完成所有列。

  • 步驟11 - 終止程序

跨列排序二維陣列的語法

這裡有一些特定的語法,用於對二維陣列的列進行排序,如下所示

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.

在這些特定的語法中,我們嘗試對二維陣列的列進行排序。

跨列排序二維陣列的方法

  • 方法1 - Java程式用於對二維陣列的列進行排序

  • 方法2 - 使用Arrays.sort函式的Java程式碼用於對二維矩陣進行排序

  • 方法3 - Java程式使用氣泡排序將二維陣列排序,如同大小為n * m的一維陣列

  • 方法4 - Java程式根據第3列進行排序,比較這些值並按升序更改二維陣列的特定順序

Java程式用於對二維陣列的列進行排序

在這段Java程式碼中,我們嘗試以一般方式展示如何對二維陣列的列進行排序。

示例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 = { { 7, 16, 10, 97, 1 },
         { 3, 8, 2, 9, 14 },
         { 5, 1, 0, 5, 2 },
         { 4, 2, 6, 0, 1 } };
      System.out.println("Matrix without sorting here ----> \n");
      for (int i = 0; i < 4; 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++) {
         for (int j = 0; j < 4; j++) {
            v.add(arr[j][i]);
      	}
      	Collections.sort(v);

      	for (int j = 0; j < 4; j++) {
           arr[j][i] = v.get(j);
      	}
      	v.removeAll(v);
      }

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

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

      System.out.println();
      }
   }
}

輸出

Matrix without sorting here ----> 

7 16 10 97 1 
3 8 2 9 14 
5 1 0 5 2 
4 2 6 0 1 
Matrix after sorting is ----> 

3 1 0 0 1 
4 2 2 5 1 
5 8 6 9 2 
7 16 10 97 14 

使用函式Arrays.sort的Java程式碼用於對二維矩陣進行排序

在這段Java程式碼中,我們嘗試使用Arrays.sort方法以一般方式展示如何對二維陣列的列進行排序。

示例2

import java.util.*;
public class sort2DMatrixbycolumn2022 {
   public static void sortbyColumn(int arr[][], int col){
      Arrays.sort(arr, new Comparator<int[]>() {
      	
         @Override      	
         public int compare(final int[] entry1, final int[] entry2) {
            if (entry1[col] > entry2[col])
               return 1;
      	    else
               return -1;
         }
      }); 
   }
   public static void main(String args[]){
      int matrix[][] = { { 39, 27, 11, 42 },
         { 10, 93, 91, 90 },
         { 54, 78, 56, 89 },
         { 24, 64, 20, 65 } };
      int col = 3;
      sortbyColumn(matrix, col - 1);

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

輸出

39 27 11 42 
24 64 20 65 
54 78 56 89 
10 93 91 90

Java程式使用氣泡排序將二維陣列排序,如同大小為n * m的一維陣列

在這段Java程式碼中,我們嘗試以一般方式展示如何將二維陣列排序為大小為n*m的一維陣列,對列進行排序。

示例3

package jex;
import java.util.*;
public class demo {
   public static void sort(int arr[][]) {
      int i, j, temp;
      int n=arr.length;
      int m=arr[0].length;
      for (i = 0; i < n * m - 1; ++i) {
         for (j = 0; j < n * m - 1 - i; ++j) {
            if (arr[j / m][j % m] > arr[(j + 1) / m][(j + 1) % m]) {
               temp = arr[(j + 1) / m][(j + 1) % m];
               arr[(j + 1) / m][(j + 1) % m] = arr[j / m][j % m];
               arr[j / m][j % m] = temp;
            }
         }
      }
   }
   public static void print(int arr[][]) {
      int i, j;
      int n=arr.length;
      int m=arr[0].length;
      for (i = 0; i < n; ++i) {
         for (j = 0; j < m; ++j) {
            System.out.print(arr[i][j]+" ");
         }
         System.out.println();
      }
   }
   public static void main(String[] args){
      Scanner sc=new Scanner(System.in);
      int[][] arr={ { 5, 12, 17, 12, 23},
         { 1, 2, 4, 6, 8},
         {21, 14, 7, 19, 27},
         { 3, 18, 9, 15, 25}
      };
      System.out.println("Array Before Sorting is here ---->: ");
      print(arr);
      sort(arr);
      System.out.println("Array After Sorting is here ----> : ");
      print(arr);
   }
}

輸出

Array Before Sorting is here ---->: 
5 12 17 12 23 
1 2 4 6 8 
21 14 7 19 27 
3 18 9 15 25 
Array After Sorting is here ----> : 
1 2 3 4 5 
6 7 8 9 12 
12 14 15 17 18 
19 21 23 25 27

Java程式根據第3列進行排序,比較這些值並按升序更改二維陣列的特定順序

在這段Java程式碼中,我們嘗試展示如何根據第3列進行排序,比較這些值並按升序更改二維陣列的特定順序。

示例4

import java.util.Arrays;
import java.util.Comparator;

public class Sort2DArray {
   public static void main(String args[]) {
      int[][] multi = new int [][]{
         {4, 9, 8},
         {7, 5, 2},
         {3, 0, 6},

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

      }
      Sort2DArrayBasedOnColumnNumber(multi,3);
      System.out.println("after sorting we get some value ---->");
      for(int i = 0; i< multi.length; i++) {
         for (int j = 0; j < multi[i].length; j++)
         System.out.print(multi[i][j] + " ");
         System.out.println();

      }
   }
    public static  void Sort2DArrayBasedOnColumnNumber (int[][] array, final int columnNumber){
      Arrays.sort(array, new Comparator<int[]>() {
         @Override
         public int compare(int[] first, int[] second) {
            if(first[columnNumber-1] > second[columnNumber-1]) return 1;
            else return -1;
         }
      });
   }
}

輸出

4 9 8 
7 5 2 
3 0 6 
after sorting we get some value ---->
7 5 2 
3 0 6 
4 9 8 

結論

透過以上討論,我們詳細瞭解了二維陣列排序問題。今天,我們使用上述語法和演算法中提到的各種排序方法來解決這個問題。希望透過這篇文章,您對如何使用Java環境排序二維陣列問題有了更廣泛的瞭解。

更新於:2024年5月31日

6000+ 瀏覽量

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告