Java Quick Sort-Algorithmus-Implementierung und -Optimierung
Quick Sort ist ein klassischer Sortieralgorithmus, der in der Praxis ein breites Anwendungsspektrum bietet. In diesem Artikel wird die Implementierung des Schnellsortierungsalgorithmus in Java vorgestellt und die Effizienz des Algorithmus durch Optimierung verbessert.
- Prinzip des Schnellsortierungsalgorithmus
Schnellsortierung übernimmt die Idee des Teilens und Eroberns. Die Grundidee besteht darin, die zu sortierende Sequenz durch einen „Benchmark“ in zwei Teile zu teilen, wobei ein Teil kleiner als der Benchmark ist , der andere Teil ist größer als der Benchmark, und dann werden die beiden Teile rekursiv in zwei Teile geteilt und schließlich wird die gesamte Sequenz sortiert.
Der spezifische Implementierungsprozess ist wie folgt:
- Wählen Sie ein Referenzelement aus, normalerweise das erste Element der Sequenz.
- Stellen Sie zwei Zeiger niedrig und hoch ein, um jeweils auf den Anfang und das Ende der Sequenz zu zeigen.
- Beginnen Sie von oben, suchen Sie vorwärts, um ein Element zu finden, das kleiner als die Grundlinie ist, und verschieben Sie es an die untere Position. Beginnen Sie dann von unten, suchen Sie rückwärts, um ein Element zu finden, das größer als die Grundlinie ist, und verschieben Sie es an die hohe Position.
- Wiederholen Sie den oben genannten Vorgang, bis sich die Werte „Low“ und „High“ treffen.
- Bringen Sie das Basiselement in die Besprechungsposition. Zu diesem Zeitpunkt sind die Elemente links vom Basiselement kleiner und die Elemente rechts davon größer.
- Rufen Sie die rekursive Schnellsortierung für den linken und rechten Teil des Referenzelements auf.
- Java-Implementierung des Schnellsortierungsalgorithmus
Das Folgende ist ein Beispielcode zur Implementierung des Schnellsortierungsalgorithmus in Java:
public class QuickSort {
public static void quickSort(int[] arr, int low, int high) {
if (low < high) {
int pivot = partition(arr, low, high); // 基准元素的位置
quickSort(arr, low, pivot - 1); // 对基准元素左边的子序列进行快速排序
quickSort(arr, pivot + 1, high); // 对基准元素右边的子序列进行快速排序
}
}
public static int partition(int[] arr, int low, int high) {
int pivot = arr[low]; // 选择第一个元素作为基准元素
while (low < high) {
while (low < high && arr[high] >= pivot) {
high--;
}
arr[low] = arr[high]; // 将比基准小的元素移到低端
while (low < high && arr[low] <= pivot) {
low++;
}
arr[high] = arr[low]; // 将比基准大的元素移到高端
}
arr[low] = pivot; // 基准元素放入相遇的位置
return low; // 返回基准元素的位置
}
public static void main(String[] args) {
int[] arr = {6, 1, 9, 0, 4, 7, 8, 2, 5, 3};
quickSort(arr, 0, arr.length - 1);
System.out.println(Arrays.toString(arr));
}
}
Nach dem Login kopieren
Das Obige ist die grundlegende Implementierung des Schnellsortierungsalgorithmus und die Sortierergebnisse können getestet werden die Hauptmethode.
- Optimierung des Schnellsortierungsalgorithmus
Obwohl der Schnellsortierungsalgorithmus im Durchschnitt eine hohe Effizienz aufweist, nimmt seine Effizienz in einigen Fällen ab. Um die Effizienz des Schnellsortierungsalgorithmus zu verbessern, können folgende Optimierungsmaßnahmen ergriffen werden:
- Basiselement zufällig auswählen: Um zu vermeiden, dass das ausgewählte Basiselement zufällig der größte oder kleinste Wert in der Sequenz ist , können Sie diese Möglichkeit reduzieren, indem Sie das Basiselement Geschlecht zufällig auswählen.
- Drei-Zahlen-Mittelmethode: Die Auswahl des Referenzelements kann durch den Mittelwert der drei Zahlen in der Reihenfolge erreicht werden. Wählen Sie die Kopf-, Mittel- und Endelemente der Sequenz aus, ordnen Sie sie in der Reihenfolge von klein nach groß an und verwenden Sie den Mittelwert als Referenzelement.
Durch die obige Optimierung kann unter besonderen Umständen die zeitliche Komplexität des Schnellsortierungsalgorithmus reduziert und die Effizienz des Schnellsortierungsalgorithmus verbessert werden.
Zusammenfassung:
Dieser Artikel stellt die Implementierung und Optimierung des Schnellsortierungsalgorithmus in Java vor. Der Schnellsortierungsalgorithmus teilt die Sequenz durch Auswahl von Referenzelementen und sortiert dann die geteilten Teilsequenzen rekursiv, um schließlich eine geordnete Sequenz zu erhalten. Die Effizienz des Schnellsortierungsalgorithmus kann durch zufällige Auswahl von Benchmark-Elementen oder den Einsatz von Optimierungsmaßnahmen wie der Drei-Zahlen-Methode weiter verbessert werden.
Das obige ist der detaillierte Inhalt vonImplementieren und verbessern Sie den Schnellsortierungsalgorithmus von Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!