Java
 Computer >> コンピューター >  >> プログラミング >> Java

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

  1. Javaと.NETの比較

    Javaは、もともとSun Microsystemsによって開発され、1995年にリリースされた高級プログラミング言語です。Javaは、Windows、Mac OS、さまざまなバージョンのUNIXなどのさまざまなプラットフォームで動作します。 .NET Frameworkは、Microsoftによって発明されたコンピューターソフトウェアフレームワークです。 Microsoft Windows OS(オペレーティングシステム)で動作します。ユーザーインターフェイス、データアクセス、データベース接続、暗号化、Webアプリケーション開発などを提供します。 言語 JavaはJavaパターンのみをサ

  2. Javaでのパッケージの作成と使用

    パッケージを作成するときは、パッケージの名前を選択し、クラス、インターフェイス、列挙、およびを含むすべてのソースファイルの先頭にその名前とともにパッケージステートメントを含める必要があります。パッケージに含めるアノテーションタイプ。 パッケージステートメントは、ソースファイルの最初の行である必要があります。各ソースファイルに含めることができるパッケージステートメントは1つだけであり、ファイル内のすべてのタイプに適用されます。 パッケージステートメントが使用されていない場合、クラス、インターフェイス、列挙、およびアノテーションタイプは現在のデフォルトパッケージに配置されます。 パッケージステ