English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In diesem Beispiel werden wir den Mergesort-Algorithmus in Java ausführen lernen.
Bevor Sie den Mergesort-Algorithmus in Java lernen, stellen Sie sicher, dass Sie den Arbeitsmechanismus des Mergesort-Algorithmus verstehen.
import java.util.Arrays; //Mergesort in Java class Main { //Kombiniere die beiden Unterarrays L und M zum Array void merge(int array[], int p, int q, int r) { int n1 = q - p + 1; int n2 = r - q; int L[] = new int[n1]; int M[] = new int[n2]; //Fülle die linken und rechten Arrays aus for (int i = 0; i < n1; i++){ L[i] = array[p + i]; } for (int j = 0; j < n2; j++){ M[j] = array[q + 1 + j]; } //Bewahre den aktuellen Index der Unter- und Hauptarrays auf int i, j, k; i = 0; j = 0; k = p; //Bis wir an einem Ende von L oder M angelangen, wählen wir das größere //Elemente L und M, und platziere sie im richtigen Ort von A[p..r]. //Absteigende Sortierung //verwende if(L[i] >= <[j]) while (i < n1 && j < n2) { if (L[i] <= M[j]) { array[k] = L[i]; i++; } else { array[k] = M[j]; j++; } k++; } // wenn die Elemente in L oder M aufgebraucht sind // Legen Sie die übrigen Elemente in A[p..r] zusammen while (i < n1) { array[k] = L[i]; i++; k++; } while (j < n2) { array[k] = M[j]; j++; k++; } } // Teile das Array in zwei Unterarrays auf, sortiere sie und kombiniere sie void mergeSort(int array[], int left, int right) { if (left < right) { //m ist der Punkt, an dem das Array in zwei Unterarrays geteilt wird int mid = (left + right) / 2; //jeder rekursiven Aufruf von Unterarrays mergeSort(array, left, mid); mergeSort(array, mid + 1right); //Fügen Sie die bereits sortierten Teilarrays zusammen merge(array, left, mid, right); } } public static void main(String args[]) { //Erstellen Sie ein unsortiertes Array int[] array = { 6, 5, 12, 10, 9, 1 }; Main ob = new Main(); //Rufen Sie die Methode mergeSort() auf //Übergeben Sie die Parameter: Array, erster Index und letzter Index ob.mergeSort(array, 0, array.length - 1); System.out.println("Geordneter Array:"); System.out.println(Arrays.toString(array)); } }
Ausgabe1
Ungeordneter Array: [6, 5, 12, 10, 9, 1] Geordnete Array: [1, 5, 6, 9, 10, 12]
Hier sind die Elemente des Arrays in aufsteigender Reihenfolge sortiert. Wenn Sie die Elemente in absteigender Reihenfolge sortieren möchten, können Sie im ersten while-Loop der merge()-Methode den Code ändern:
Kleiner als Zeichen ändern if (L[i] >= M[j]) {