ホームページ >Java >&#&チュートリアル >Java での 2D 配列のソート
次の記事では、Java での 2D 配列ソートの概要を説明します。配列の配列は 2 次元配列にすることができます。 2D 配列を構成する行列は、行と列のコレクションを表します。 2D 配列の要素にはランダムにアクセスできるため、1 次元配列の場合と同じように、インデックスを使用して 2D 配列内の個々のセルにアクセスできます。
広告 このカテゴリーの人気コース JAVA マスタリー - スペシャライゼーション | 78 コース シリーズ | 15 回の模擬テスト2D 配列では、セルには 2 つのインデックスがあり、1 つは行番号、もう 1 つは列番号です。ソートは、2D 配列内の要素を特定の順序で配置する手法です。 2D 配列は昇順または降順のいずれかにすることができます。 Java の 2D 配列をさまざまな方法で昇順と降順に並べ替える方法を見てみましょう。
さまざまな例を以下に示します:
2D 配列のすべての要素をソートする Java での 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); } }
出力:
上記のプログラムと同様、sort() メソッドは 2D 配列の各要素を反復し、現在の要素が次の要素より大きい場合に数値を交換するのに役立ちます。最後に、print メソッドは 2D 配列のすべての要素を表示します。上記の出力に示すように、main 関数では、sort() 関数の呼び出し後と呼び出し前に 2D 配列が作成され、出力されます。
2D 配列のすべての要素を列方向にソートする Java での 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 関数では、sort() 関数の呼び出し後と呼び出し前に 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,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 配列の各要素を反復し、配列を行ごとに並べ替えるのに便利です。最後に、print メソッドは 2D 配列のすべての要素を表示します。上記の出力に示すように、main 関数では、sort() 関数の呼び出し後と呼び出し前に 2D 配列が作成され、出力されます。
ソートは、2D 配列内の要素を特定の順序で配置する手法です。たとえば、2D 配列では、セルには行番号と列番号という 2 つのインデックスがあります。
以上がJava での 2D 配列のソートの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。