Heim >Java >javaLernprogramm >Sortieren Sie ein Array von 0, 1 und 2 mit Java

Sortieren Sie ein Array von 0, 1 und 2 mit Java

王林
王林nach vorne
2023-09-09 19:57:091276Durchsuche

Sortieren Sie ein Array von 0, 1 und 2 mit Java

Sortieren Sie bei einem Array bestehend aus 0, 1 und 2 die Elemente so, dass alle Nullen vor den Einsen und alle Zweien an letzter Stelle stehen. Wir müssen alle Elemente des Arrays direkt sortieren.

Wir können den DNF-Sortieralgorithmus (Dutch Flag) verwenden, um dieses Problem zu lösen. Zum Beispiel:

Input-1 -

arr[ ]= {2,0,0,1,2,1 }

Output -

0 0 1 1 2 2

Explanation − Verwenden Sie den DNF-Sortieralgorithmus, um das angegebene Array mit 0, 1 und 2 zu sortieren. Es wird als {0, 0, 1,1,2,2}.

Input-2

arr[ ] = {0,1,1,2,1,1,0}

Output -

0 0 1 1 1 1 2

Explanation − Sortieren Sie das angegebene Array von Elementen, die 0, 1 und 2 enthalten, mithilfe des DNF-Sortieralgorithmus. Die Ausgabe erfolgt als {0,0,1, 1,1,1,2}.

So lösen Sie dieses Problem

Im gegebenen Array von 0, 1 und 2 können wir den DNF-Sortieralgorithmus verwenden.

DNF-Sortieralgorithmus – Dieser Algorithmus erfordert 3 Zeiger, um das gesamte Array zu durchqueren und notwendige Elemente auszutauschen.

  • Erstellen Sie einen Tiefzeiger am Anfang des Arrays und einen Hochzeiger, der auf das Ende des Arrays zeigt.

  • Finden Sie den Mittelpunkt des Arrays und erstellen Sie einen Mittelpunkt, der vom Anfang des Arrays bis zum Ende iteriert.

  • Wenn der mittlere Zeiger des Arrays „0“ ist, tauschen Sie das Element aus, das auf den unteren Zeiger zeigt. Niedrige und mittlere Zeiger hinzugefügt.

  • Wenn der mittlere Zeiger des Arrays „2“ ist, tauschen Sie ihn mit dem Element aus, das auf den oberen Zeiger zeigt. Erhöhen Sie den mittleren Zeiger und verringern Sie den oberen Zeiger.

  • Wenn der mittlere Zeiger des Arrays „1“ ist, erhöhen Sie den mittleren Zeiger.

Beispiel

Demonstration

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);
   }
}

Ausgabe

Durch Ausführen des obigen Codes wird die folgende Ausgabe generiert:

0 0 0 0 1 1 1 1 2

Das obige ist der detaillierte Inhalt vonSortieren Sie ein Array von 0, 1 und 2 mit Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen