Java中二维数组的排序方法:如何按升序和降序排列2D数组元素

数组可以被定义为二维数组。组成 2D 数组的矩阵是由行和列的集合构成的。由于 2D 数组的元素能够进行随机访问,所以我们能够利用索引来访问 2D 数组中的各个单元格,就如同我们可以访问一维数组那样。

Java中二维数组的排序方法:如何按升序和降序排列2D数组元素

在二维数组里,单元格拥有两个索引,其中一个是行号,另一个是列号。排序这种行为,是一种按照特定顺序来排列 2D 数组中元素的技术。2D 数组能够按照升序或者降序进行排序。接下来让我们来瞧瞧怎样在 Java 中对 2D 数组按照升序和降序进行不同的排序。

Java中的2D数组排序示例

下面介绍了不同的示例:

示例#1

Java 中有关于 2D 数组排序的示例,此示例是用来对 2D 数组的所有元素进行排序的。

代码:

package jex;
import java.util.*;
public class demo {
使用冒泡排序法来对二维数组进行排序。
将二维数组按照在大小为 n * m 的一维数组中的顺序进行排序。
公共静态 void 对(int 数组[][])进行排序。
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] 成立,那么就执行以下操作:
arr 中,先计算 (j + 1) 除以 m 的结果,将其作为一个索引,再计算 (j + 1) 对 m 取余的结果,将其作为另一个索引,然后取 arr 中这两个索引对应的元素赋值给 temp 。
arr 中 (j + 1) 除以 m 的结果作为行索引,(j + 1) 对 m 取余的结果作为列索引所对应的值等于 arr 中 j 除以 m 的结果作为行索引,j 对 m 取余的结果作为列索引所对应的值;
arr[j / m][j % m] = temp;
}
}
}
}
公共静态 void 打印(int 数组[][]) {
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);
}
}

输出

sort()方法如同上面的程序那般,会对 2D 数组的每个元素进行迭代。在迭代过程中,若当前元素比下一个元素大,就会交换数字。最后,print 方法会把 2D 数组的所有元素展示出来。在 main 函数里,2D 数组是在调用 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);
}
}

输出

sort()方法会像上面的重写程序那样,对 2D 数组的每个元素进行迭代,然后按照列来对数组进行排序。最终,print 方法会把 2D 数组的所有元素显示出来。在 main 函数里,2D 数组是在调用 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;karr[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);
}
}

输出

sort()方法会像之前那样,对 2D 数组的每个元素进行迭代,接着按行来对数组进行排序。之后,print 方法会把 2D 数组的所有元素展示出来。在 main 函数里,2D 数组是在调用 sort()函数之前以及之后分别进行创建和打印的,就如同上面所给出的输出那样。

结论

排序是一种将 2D 数组中的元素按照特定顺序进行排列的技术。在二维数组中,单元格拥有两个索引,分别是行号和列号。若大家希望了解更多相关知识,可关注动力节点的 Java 在线学习。其课程内容从入门到精通,细致且全面,非常适合没有基础的小伙伴学习,期望能对大家有所帮助。

Java数组

你可能想看:
« 上一篇
下一篇 »

相关推荐

java中什么是冒泡,冒泡算法

2026年09月06日

27阅读

java中冒号,java双冒号

2026年09月06日

26阅读

java中的->,java中的是什么意思

2026年09月06日

24阅读

java中的super用法,Java中super的说明

2026年09月06日

28阅读

java中反射的应用,java中反射的应用场景

2026年09月06日

25阅读

java中开关的定义,Java关键字有哪些

2026年09月06日

25阅读