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