更新時(shí)間:2022-09-29 11:34:19 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1497次
數(shù)組可以定義為二維數(shù)組。組成2D數(shù)組的矩陣表示為行和列的集合。因?yàn)?D數(shù)組的元素可以隨機(jī)訪問(wèn),所以我們可以使用索引訪問(wèn)2D數(shù)組中的各個(gè)單元格,就像我們可以訪問(wèn)一維數(shù)組一樣。
在二維數(shù)組中,單元格有兩個(gè)索引,一個(gè)是行號(hào),另一個(gè)是列號(hào)。排序是一種按特定順序排列2D數(shù)組中元素的技術(shù)。2D數(shù)組可以按升序或降序排序。讓我們看看如何按升序和降序?qū)ava中的2D數(shù)組進(jìn)行不同的排序。
下面介紹了不同的示例:
示例#1
Java中的2D數(shù)組排序示例,用于對(duì)2D數(shù)組的所有元素進(jìn)行排序。
代碼:
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);
}
}
輸出
與上面的程序一樣,sort()方法用于迭代2D數(shù)組的每個(gè)元素,當(dāng)當(dāng)前元素大于下一個(gè)元素時(shí),交換數(shù)字。最后,print方法顯示2D數(shù)組的所有元素。在main函數(shù)中,2D數(shù)組是在調(diào)用sort()函數(shù)前后創(chuàng)建和打印的,如上面的輸出所示。
示例#2
Java中的2D數(shù)組排序示例,按列對(duì)2D數(shù)組的所有元素進(jìn)行排序。
代碼:
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數(shù)組的每個(gè)元素,并按列對(duì)數(shù)組進(jìn)行排序。最后,print方法顯示2D數(shù)組的所有元素。在main函數(shù)中,2D數(shù)組是在調(diào)用sort()函數(shù)前后創(chuàng)建和打印的,如上面的輸出所示。
示例#3
按行對(duì)二維數(shù)組的所有元素進(jìn)行排序。
代碼:
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);
}
}
輸出
與上面的重寫程序一樣,sort()方法用于迭代2D數(shù)組的每個(gè)元素,并按行對(duì)數(shù)組進(jìn)行排序。最后,print方法顯示2D數(shù)組的所有元素。在main函數(shù)中,2D數(shù)組是在調(diào)用sort()函數(shù)前后創(chuàng)建和打印的,如上面的輸出所示。
排序是一種按特定順序排列2D數(shù)組中元素的技術(shù)。例如,在二維數(shù)組中,單元格有兩個(gè)索引:行號(hào)和列號(hào)。如果大家想了解更多相關(guān)知識(shí),可以關(guān)注一下動(dòng)力節(jié)點(diǎn)的Java在線學(xué)習(xí),里面的課程內(nèi)容從入門到精通,細(xì)致全面,很適合沒有基礎(chǔ)的小伙伴學(xué)習(xí),希望對(duì)大家能夠有所幫助。
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743