Schnellsortierung in Java, auch bekannt als Partition-Exchange-Sortierung, ist ein Divide-and-Conquer-Sortieralgorithmus. Die schnelle Sortierung ist ein gutes Beispiel für einen Algorithmus, der aufgrund seiner Divide-and-Conqueres-Natur am besten CPU-Caches nutzt. Der Quicksort-Algorithmus ist einer der am häufigsten verwendeten Sortieralgorithmen, insbesondere zum Sortieren großer Listen, und die meisten Programmiersprachen haben ihn implementiert. Der Quicksort-Algorithmus teilt die Originaldaten in zwei Teile: einzeln sortiert und dann zusammengeführt, um sortierte Daten zu erzeugen.
Starten Sie Ihren kostenlosen Softwareentwicklungskurs
Webentwicklung, Programmiersprachen, Softwaretests und andere
Nehmen wir an, dass das Array {8, 6, 3, 4, 9, 2, 1, 7} mit Quick Sort sortiert werden muss.
1. Wählen Sie aus dem Array ein Element namens Pivot aus. Im Allgemeinen wird das mittlere Element als Drehpunkt gewählt. Nehmen wir 4 als Drehpunkt.
2. Ordnen Sie das Array in zwei Teile um, sodass Elemente, die kleiner als der Pivot sind, vor dem Pivot stehen und Elemente, die größer als der Pivot sind, nach dem Pivot erscheinen. Folgende Schritte werden befolgt:
3. Wenden Sie die Schritte 1 und 2 rekursiv für das linke Unterarray (Array mit Elementen, die kleiner als der Pivot sind) und für das rechte Unterarray (Array mit Elementen, die größer als der Pivot sind) an. Wenn das Array nur ein oder null Elemente enthält, gilt das Array als sortiert.
Hier ist ein Java-Programm zum Sortieren eines Arrays von Ganzzahlen mithilfe eines Schnellsortierungsalgorithmus.
Code:
import java.lang.*; import java.util.*; public class Main { private int array[]; private int length; public void sort(int[] inputArrayArr) { if (inputArrayArr == null || inputArrayArr.length == 0) { return; } this.array = inputArrayArr; length = inputArrayArr.length; performQuickSort(0, length - 1); } private void performQuickSort(int lowerIndex, int higherIndex) { int i = lowerIndex; int j = higherIndex; // calculate pivot number // middle element taken as pivot int pivot = array[lowerIndex+(higherIndex-lowerIndex)/2]; // Divide into two subarrays while (i <= j) { /** * In each iteration, find an element from left side of the pivot which * is greater than the pivot value, and also find an element * From right side of the pivot which is less than the pivot value. Once the search * is complete, we exchange both elements. */ while (array[i] < pivot) { i++; } while (array[j] > pivot) { j--; } if (i <= j) { swapNumbers(i, j); //move index to next position on both sides i++; j--; } } // call performQuickSort() method recursively if (lowerIndex < j) performQuickSort(lowerIndex, j); if (i < higherIndex) performQuickSort(i, higherIndex); } private void swapNumbers(int i, int j) { int temp = array[i]; array[i] = array[j]; array[j] = temp; } public static void main(String args[]){ Main quickSort = new Main(); int[] inputArray = {8,6,3,4,9,2,1,7}; quickSort.sort(inputArray); System.out.println("Sorted Array " + Arrays.toString(inputArray)); } }
Ausgabe:
Das Folgende sind die Vorteile des Schnellsortierungsalgorithmus:
Quicksort ist ein schneller und endrekursiver Algorithmus, der nach dem Divide-and-Conquer-Prinzip arbeitet. Hier ist die Komplexitätsanalyse im besten, durchschnittlichen und schlechtesten Fall:
In Java Arrays. Die Methode Sort () verwendet einen schnellen Sortieralgorithmus, um ein Array zu sortieren.
Das obige ist der detaillierte Inhalt vonSchnelle Sortieralgorithmen in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!