Javaを使用して、0、1、および2の配列を並べ替えます
0、1、および2の配列が与えられた場合、すべてのゼロが1の前に最初に来て、すべての2が最後になるように、要素を並べ替えます。配列のすべての要素をインプレースで並べ替える必要があります。
この問題は、DNF(Dutch National Flag)ソートアルゴリズムを使用して解決できます。たとえば、
入力-1 −
arr[ ]= {2,0,0,1,2,1 }
出力 −
0 0 1 1 2 2
説明 − DNF並べ替えアルゴリズムを使用して0、1、2を含む要素の指定された配列を並べ替えると、出力が{0,0,1,1,2,2}として出力されます。
入力-2 −
arr[ ] = {0,1,1,2,1,1,0}
出力 −
0 0 1 1 1 1 2
説明 − DNF並べ替えアルゴリズムを使用して0、1、2を含む要素の指定された配列を並べ替えると、出力が{0,0,1,1,1,1,2}として出力されます。
この問題を解決するためのアプローチ
与えられた0、1、および2の配列では、DNFソートアルゴリズムを使用できます。
DNFソートアルゴリズム −アルゴリズムでは、必要な要素を交換して配列全体を反復処理するために3つのポインターが必要です。
-
配列の先頭にローポインタを作成し、アレイの末尾にハイポインタを作成します。
-
配列の中点を見つけて、配列の最初から最後まで繰り返す中点も作成します。
-
配列の中央ポインタが「0」の場合は、低い方向を指す要素を交換します。ローポインタとミッドポインタをインクリメントします。
-
配列の中間ポインタが「2」の場合は、上位を指す要素と交換します。ミッドポインタをインクリメントし、ハイポインタをデクリメントします。
-
配列のミッドポインタが「1」の場合は、ミッドポインタを増やします。
例
public class Solution { public static void binarySorting(int arr[], int n){ int low=0; int high= n-1; int mid=0; while(mid<=high){ if(arr[mid]==0){ int temp= arr[mid]; arr[mid]= arr[low]; arr[low]= temp; mid++; low++; } if(arr[mid]==1){ mid++; } if(arr[mid]==2){ int temp= arr[mid]; arr[mid]= arr[high]; arr[high]= temp; high--; } } } public static void print(int arr[], int n){ for (int i = 0; i < n; i++) System.out.print(arr[i] +" "); } public static void main(String[] args){ int arr[] ={ 0,0,1,0,1,0,1,2,2}; int n = arr.length; binarySorting(arr, n); print(arr, n); } }
出力
上記のコードを実行すると、次のように出力が生成されます
0 0 0 0 1 1 1 1 2
-
Javaと.NETの比較
Javaは、もともとSun Microsystemsによって開発され、1995年にリリースされた高級プログラミング言語です。Javaは、Windows、Mac OS、さまざまなバージョンのUNIXなどのさまざまなプラットフォームで動作します。 .NET Frameworkは、Microsoftによって発明されたコンピューターソフトウェアフレームワークです。 Microsoft Windows OS(オペレーティングシステム)で動作します。ユーザーインターフェイス、データアクセス、データベース接続、暗号化、Webアプリケーション開発などを提供します。 言語 JavaはJavaパターンのみをサ
-
Javaでのパッケージの作成と使用
パッケージを作成するときは、パッケージの名前を選択し、クラス、インターフェイス、列挙、およびを含むすべてのソースファイルの先頭にその名前とともにパッケージステートメントを含める必要があります。パッケージに含めるアノテーションタイプ。 パッケージステートメントは、ソースファイルの最初の行である必要があります。各ソースファイルに含めることができるパッケージステートメントは1つだけであり、ファイル内のすべてのタイプに適用されます。 パッケージステートメントが使用されていない場合、クラス、インターフェイス、列挙、およびアノテーションタイプは現在のデフォルトパッケージに配置されます。 パッケージステ