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つだけであり、ファイル内のすべてのタイプに適用されます。 パッケージステートメントが使用されていない場合、クラス、インターフェイス、列挙、およびアノテーションタイプは現在のデフォルトパッケージに配置されます。 パッケージステ