English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java-Grundlagen-Tutorial

Java Flusskontrolle

Java Array

Java objektorientiert (I)

Java objektorientiert (II)

Java objektorientiert (III)

Java-Excepion-Verarbeitung

Java Liste (Liste)

Java Queue (Warteschlange)

Java Map-Kollektion

Java Set-Kollektion

Java Eingabe-Ausgabe(I/O)

Java Reader/Writer

Andere Themen in Java

Java-Programm zur Implementierung des Mergesort-Algorithmus

Java Beispiele大全

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.

Beispiel: Java-Programm zur Implementierung des Mergesort-Algorithmus

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]) {

Java Beispiele大全