So implementieren Sie eine Zusammenführungsart in Java

So implementieren Sie eine Zusammenführungsart in Java

In der Java -Programmierung kann es Fälle geben, in denen der Entwickler die Masseneinträge sortieren muss. Zum Beispiel das Anordnen oder Analysieren der zufällig generierten Werte. In solchen Fällen die “Zusammenführen, sortierenIn Java ist effektiv und schneller und verbraucht so weniger Zeit, um die längeren Einträge oder Listen im Vergleich zu anderen Algorithmen zu sortieren. I.e., “Blasenart”.

Dieser Blog wird die Implementierung des Algorithmus „Merge Sort“ in Java erläutern.

So implementieren Sie eine "Zusammenführungsart" in Java?

Der "Zusammenführen, sortieren”Basiert auf dem“dividieren und erobernAlgorithmus so, dass das Array in gleiche Hälften unterteilt und dann weiter unterteilt wird, bis die Teilung nicht mehr durchgeführt werden kann. Nachdem das Array unterteilt ist, wird es erneut auf der Grundlage der Elemente auf sortierter (aufsteigender) Weise verschmolzen.

Demonstration des Algorithmus „Merge Sort“

Überlegen wir den untergegewalten Code, um das besprochene Konzept zu verstehen:

öffentliche Klasse Mergesort
public static void mergedArray (int [] LeftArray, int [] rightArray, int [] Finalarray, int LeftArraysize, int rightArraysize)
int item = 0, links = 0, rechts = 0;
während (linksif (linksarray [links]FinalArray [Item ++] = LeftArray [links ++];

anders
FinalArray [Artikel ++] = RightArray [rechts ++];

während (linksFinalArray [Item ++] = LeftArray [links ++];

während (richtigFinalArray [Artikel ++] = RightArray [rechts ++];


Wenden Sie im obigen Code, der zum Zusammenführen zugewiesen ist, die folgenden Schritte an:

    • Definieren Sie eine Funktion namens “mergedarrayMit den angegebenen Parametern für linke und rechte Arrays, das ursprüngliche Array und die Größen der linken und rechten Arrays.
    • Initialisieren Sie in der Funktionsdefinition die angegebenen Werte, um eine Bedingung später im Code anzuwenden.
    • Wenden Sie im nächsten Schritt die Kombination an “während”Schleife und“WennBedingung, um die Bedingung für die Verschmelzung zu überprüfen.
    • Wenn das Element im linken Array kleiner als das des rechten Array -Elements bei einem bestimmten Index ist, wird das zusammengeführte Array mit dem linken Array -Element von links nach rechts angehängt.
    • Im anderen Fall wird das richtige Array -Element angehängt.
    • Danach anwenden Sie die “währendSchleife, um zu prüfen, ob nur Elemente im linken oder rechten Array übrig sind, und fügen Sie sie dem Array entsprechend an.

Implementierung


Gehen wir nun mit dem folgenden Code -Ausschnitt fort:

public static void dividearray (int [] array, int länge)
if (Länge < 2)return;
int div = Länge / 2;
int [] larray = new int [div];
int [] rarray = new int [Länge-div];
int temp = 0;
für (int i = 0; iif (ilarray [i] = array [i];

anders
RARRAY [TEMP] = Array [i];
temp = temp+1;

Dividearray (Larray, Div);
Dividearray (Rarray, Länge-div);
mergedArray (Larray, Rarray, Array, Div, Länge-div);


Führen Sie in diesem Code, der zur Dividierung des bestandenen Array implementiert ist, die folgenden Schritte aus:

    • Definieren Sie die Funktion “Dividearray ()Die Parameter zeigen auf das übergebene Array und seine Länge.
    • Überprüfen Sie nun die Bedingung so, dass die Arraylänge nicht größer ist als “2”. Wenn ja, geben Sie das Array so zurück, wie es ist. Andernfalls führen Sie die weiteren Funktionen aus.
    • Danach das Array in zwei gleiche Hälften über sein (Array) übergeben.
    • Erstellen Sie im nächsten Schritt zwei Ganzzahl -Arrays basierend auf der geteilten Länge des übergebenen Arrays.
    • Gehen Sie nun die linken und rechten Split -Arrays mit den übergebenen Array -Elementen an.
    • Zuletzt auf diese Funktion auf diese beiden geteilten Arrays aufzurufen, die die kopierten Daten des ursprünglichen bestandenen Arrays akkumulieren und auf die “zugreifen“mergedArray ()Funktion, die die linken und rechten Arrays vergleicht und sortiert.

Implementierung


Übersicht über die “hauptsächlich”Code:

public static void main (String args [])
int [] mergesortArray = 30, 12, 46, 6, 17, 23;
Dividearray (MergesortArray, MergesortArray.Länge);
für (int i = 0; i< mergesortArray.length;++i)
System.aus.print (mergesortArray [i]+ "");


Im "hauptsächlich”, Wenden Sie die folgenden Schritte an:

    • Deklarieren Sie ein Array namens “MergesortArrayDas muss sortiert werden.
    • Rufen Sie im nächsten Schritt die Funktion auf “Dividearray ()”Durch Übergeben des deklarierten Arrays und seiner Länge über die“LängeEigentum als Argumente.
    • Danach durch das Array iterieren und die sortierten Array -Elemente über die “anstellenfür”Schleife.
    • Algorithmus: Das bereitgestellte Array wird an die Funktion übergeben “Dividearray ()Das spaltet das Array und diese Funktion dann auf die Funktion auf "mergedArray ()Das verschmilzt die Split -Arrays basierend auf den enthaltenen Elementen.

Implementierung


Ganzer Code

öffentliche Klasse Mergesort
public static void mergedArray (int [] LeftArray, int [] rightArray, int [] Finalarray, int LeftArraysize, int rightArraysize)
int item = 0, links = 0, rechts = 0;
während (linksif (linksarray [links]FinalArray [Item ++] = LeftArray [links ++];

anders
FinalArray [Artikel ++] = RightArray [rechts ++];

während (linksFinalArray [Item ++] = LeftArray [links ++];

während (richtigFinalArray [Artikel ++] = RightArray [rechts ++];

public static void dividearray (int [] array, int länge)
if (Länge < 2)return;
int div = Länge / 2;
int [] larray = new int [div];
int [] rarray = new int [Länge-div];
int temp = 0;
für (int i = 0; iif (ilarray [i] = array [i];

anders
RARRAY [TEMP] = Array [i];
temp = temp+1;

Dividearray (Larray, Div);
Dividearray (Rarray, Länge-div);
mergedArray (Larray, Rarray, Array, Div, Länge-div);

public static void main (String args [])
int [] mergesortArray = 30, 12, 46, 6, 17, 23;
Dividearray (MergesortArray, MergesortArray.Länge);
für (int i = 0; i< mergesortArray.length;++i)
System.aus.print (mergesortArray [i]+ "");


Ausgang


In dieser Ausgabe kann impliziert werden, dass das bestandene Array angemessen sortiert ist.

Abschluss

Die Zusammenführungsart basiert auf dem “dividieren und erobernAlgorithmus, so dass das Array in gleiche Hälften unterteilt und basierend auf den sortierten Elementen erneut verschmolzen wird. Das Ergebnis des Algorithmus wird nach sortierter Weise gemäß dem ursprünglichen abgerufen. In diesem Blog wurde die Implementierung des Merge -Sort -Algorithmus in Java erörtert.