首頁  >  文章  >  Java  >  Java 中的二維數組排序

Java 中的二維數組排序

WBOY
WBOY原創
2024-08-30 15:27:291188瀏覽

以下文章提供了 Java 中的 2D 陣列排序的概述。數組的數組可以是二維數組。組成二維數組的矩陣表示行和列的集合。因為 2D 數組的元素可以隨機訪問,所以我們可以使用索引訪問 2D 數組中的各個單元,就像使用一維數組一樣。

廣告 該類別中的熱門課程 JAVA 掌握 - 專業化 | 78 課程系列 | 15 次模擬測驗

在二維數組中,單元格有兩個索引,一個是行號,另一個是列號。排序是一種按特定順序排列二維數組中元素的技術。二維數組可以按升序或降序排列。讓我們看看如何在 Java 中以不同的方式對二維數組進行升序和降序排序。

Java 中二維數組排序的範例

不同的例子如下:

範例#1

Java 中的 2D 陣列排序範例,用於對 2D 陣列的所有元素進行排序。

代碼:

package jex;
import java.util.*;
public class demo {
// using bubble sort to sort 2D array
// sort 2D array same as it is in a 1D array of size n * m
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 : ");
print(arr);
sort(arr);
System.out.println("Array After Sorting is : ");
print(arr);
}
}

輸出:

Java 中的二維數組排序

如上面的程式所示,sort() 方法可用於迭代二維數組的每個元素,並且噹噹前元素大於下一個元素時,則交換數字。最後,列印方法顯示二維數組的所有元素。在 main 函數中,在呼叫 sort() 函數之後和之前建立並列印二維數組,如上面的輸出所示。

範例#2

Java 中的 2D 陣列排序範例,按列對 2D 陣列的所有元素進行排序。

代碼:

package jex;
import java.util.*;
public class demo {
public static void sort(int arr[][]) {
int i, j,k, temp;
int n=arr.length;
int m=arr[0].length;
for (k = 0; k < m; ++k) {
for (i = 0; i < n; ++i) {
for (j = 0; j < n - 1 - i; ++j) {
if (arr[j][k] > arr[j + 1][k]) {
temp = arr[j + 1][k];
arr[j + 1][k] = arr[j][k];
arr[j][k] = 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 : ");
print(arr);
sort(arr);
System.out.println("Array After Sorting is : ");
print(arr);
}
}

輸出:

Java 中的二維數組排序

與上面的重寫程式一樣,sort() 方法可用於迭代 2D 陣列的每個元素並按列對陣列進行排序。最後,列印方法顯示二維數組的所有元素。在 main 函數中,在呼叫 sort() 函數之後和之前建立並列印二維數組,如上面的輸出所示。

範例 #3

按行對二維數組的所有元素進行排序。

代碼:

package jex;
import java.util.*;
public class demo {
// using bubble sort to sort 2D array
// sort 2D array same as it is in a 1D array of size n * m
public static void sort(int arr[][]) {
int i, j,k, temp;
int n=arr.length;
int m=arr[0].length;
for(k=0;k<n;++k){
// applying bubble sort on kth row
for(i=0;i<m;++i){
for(j=0;j<m-1-i;++j){
if(arr[k][j]>arr[k][j+1]){
temp = arr[k][j+1];
arr[k][j+1] = arr[k][j];
arr[k][j] = 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 : ");
print(arr);
sort(arr);
System.out.println("Array After Sorting is : ");
print(arr);
}
}

輸出:

Java 中的二維數組排序

與上面的重寫程式一樣,sort() 方法可用於迭代 2D 陣列的每個元素並按行對陣列進行排序。最後,列印方法顯示二維數組的所有元素。在 main 函數中,在呼叫 sort() 函數之後和之前建立並列印二維數組,如上面的輸出所示。

結論

排序是一種以特定順序排列 2D 陣列中元素的技術。例如,在二維數組中,一個單元格有兩個索引:行號和列號。

以上是Java 中的二維數組排序的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn