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()'對陣列或集合進行排序。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP