Java中根據指定列的值排序二維陣列


陣列是一種線性資料結構,用於儲存一組具有相似資料型別的元素。它以順序方式儲存資料。一旦建立陣列,就不能更改其大小,即它是固定長度的。

假設我們有一個M x M階的二維陣列,其中M是行數和列數。我們必須對給定陣列的指定列進行排序。在本文中,我們將嘗試找到解決給定問題的方法。

根據列值對二維陣列排序

排序是指將給定列表或陣列的元素按升序或降序重新排列。讓我們透過以下視覺化表示來了解什麼是排序:

示例1

當我們對這個二維陣列的第一列排序時:

二維陣列的語法

// declaration with size
Data_Type nameOfarray[][] = new Data_Type[sizeofrow][sizeofcolumn]; 
Or,
// declaration and initialization
Data_Type nameOfarray[][] = { {values separated by comma} }; 

我們可以在程式中使用以上任何一種語法。

Data_Type的位置,我們可以使用int和double之類的基本資料型別。Row和Column是陣列的所需大小。

在進入程式之前,讓我們再討論一件事。

Comparator介面

Java提供了一個名為sort()的內建方法,可以按自然順序對陣列和集合進行排序。Comparator是一個泛型介面,當我們需要以自定義方式對元素進行排序時可以使用,基本上,我們可以控制排序的順序。此介面定義了一個方法‘compare()’,它接受兩個引數並進行比較。如果兩個引數相等,則返回0;如果第一個值大於第二個值,則返回正值;否則返回負值。

語法

Comparator<typeOfelement> nameOfcollection = new Comaprator<typeOfelement>() {
   // your code here
};

演算法

  • 步驟1 - 在類'Srt'中定義一個帶有兩個引數的方法'araySort()'。在此方法中,建立一個Comparator介面'comp'的物件。現在,定義一個compare方法,該方法將陣列的兩行作為引數。

  • 步驟2 - 接下來,我們將使用一個if-else塊來比較指定的列值,如果第一列的元素大於第二列,則返回1,否則返回-1。

  • 步驟3 - 現在,使用'Arrays.sort()'方法對陣列進行排序。

  • 步驟4 - 使用兩個for迴圈列印新的已排序陣列。

  • 步驟5 - 最後,在main()方法中,我們將宣告並初始化一個數組。接下來,建立一個類'Srt'的物件,以'aray'和列索引作為引數來呼叫方法'araySort()'。

示例

import java.util.*;
class Srt {
   void araySort(int aray[][], int cl) {
      Comparator<int[]> comp = new Comparator<int[]>() {
         public int compare(int[] val1, int[] val2) {
            if(val1[cl-1] > val2[cl-1]) {
               return 1;
            } else {
               return -1;
            }
         }
      };
      Arrays.sort(aray, comp);
      System.out.println("The sorted array: ");
      for(int i = 0; i< aray.length; i++) {
         for (int j = 0; j < aray[i].length; j++) {
            System.out.print(aray[i][j] + " ");
         }
         System.out.println();
      }
   }
}
public class Sorting {
   public static void main(String[] args) {
      int aray[][] = { { 7, 2, 1, 3 }, { 6, 1, 3, 7 }, { 4, 9, 8, 0 }, { 8, 0, 1, 2 } };
      System.out.println("The given array we have: ");
      // for each loop to print original 2D array
      for (int[] array : aray) {
         for (int print : array) {
            System.out.print(print + " ");
         } 
         System.out.println();
      }
      Srt obj = new Srt();
      // calling method using object
      obj.araySort(aray, 1);
      obj.araySort(aray, 3);
   }
}

輸出

The given array we have: 
7 2 1 3 
6 1 3 7 
4 9 8 0 
8 0 1 2 
The sorted array: 
4 9 8 0 
6 1 3 7 
7 2 1 3 
8 0 1 2 
The sorted array: 
8 0 1 2 
7 2 1 3 
6 1 3 7 
4 9 8 0

結論

二維陣列是一個具有行和列的陣列。在本文中,我們建立了一個Java程式,用於根據指定列的值對二維陣列進行排序。我們瞭解瞭如何使用Comparator介面的內建方法'compare()'對陣列或集合進行排序。

更新於:2023年5月12日

瀏覽量:1K+

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.