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

王林
Freigeben: 2023-09-09 19:57:09
nach vorne
1190 Leute haben es durchsucht

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 }
Nach dem Login kopieren

Output -

0 0 1 1 2 2
Nach dem Login kopieren

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}
Nach dem Login kopieren

Output -

0 0 1 1 1 1 2
Nach dem Login kopieren

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);
   }
}
Nach dem Login kopieren

Ausgabe

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

0 0 0 0 1 1 1 1 2
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage