Einführung in Merge Sort in Java

Merge Sort in Java ist eine der Sortiermethoden. Sortieren in einer beliebigen Programmiersprache bedeutet, die Daten nacheinander anzuordnen. Die Anordnung kann in aufsteigender oder absteigender Reihenfolge erfolgen. Es hängt völlig vom Benutzer ab, wie er die Bestellung haben möchte. Die Sortierung wird nicht nur für Zahlen, sondern auch für Buchstaben und Namen verwendet. Die Sortierung wird verwendet, um den Schülern einer Klasse Rollennummern zuzuweisen. Außerdem wird der Person, die zuerst kommt, gemäß dem Sortieralgorithmus Rang 1 zugewiesen. Die Sortierung kann sowohl nach Rang, Gewicht, Größe als auch nach den Namen der jeweiligen Personen im Allgemeinen erfolgen. In Java gibt es viele Sortiertechniken, die von Programmierern und Programmierern ausgiebig verwendet werden, um sicherzustellen, dass alle möglichen Arten der Datenanordnung berücksichtigt werden.

Im Folgenden werden einige der in Java gängigen Techniken zum Sortieren von Algorithmen beschrieben

  • Blase sortieren
  • Auswahl sortieren
  • Sortieren durch Einfügen
  • Haufen sortieren
  • Zusammenführen, sortieren

Neben den oben genannten Techniken können auch andere Techniken zum sequentiellen Sortieren von Daten verwendet werden, wie beispielsweise Quicksort.

Merge-Sortierung in Java

In Merge Sort in Java sehen wir, wie der von John Von Neumann im Jahr 1945 erfundene Merge Sort-Mechanismus funktioniert, der in Java zum sequentiellen Anordnen von Daten verwendet wird. Merge Sort In Java ist dem Quick Sort-Mechanismus ziemlich ähnlich. Es wird auch als Divide and Conquer-Algorithmus bezeichnet. Mit einfachen Worten, es teilt das Array in zwei Hälften. Danach werden die beiden Arrays in der vom Benutzer gewünschten Reihenfolge sortiert. Schließlich werden die beiden Hälften zusammengeführt und es wird leicht ein vollständiges sortiertes Array. Angenommen, es gibt ein Array mit dem Namen arr (). Der Sortiermechanismus für das Zusammenführen teilt das Array zuerst in zwei gleiche Hälften. Anschließend werden die jeweiligen Hälften sortiert, wobei an jedem Ende ein sortiertes Array angezeigt wird. Schließlich werden die beiden Hälften auch gleichgesetzt, ob der linke Index größer ist als der rechte oder umgekehrt, und dann wird die Zahl in das Array eingefügt. Auf diese Weise wird das Array sortiert.

Das folgende Diagramm zeigt, wie ein Array mithilfe der Zusammenführungssortierung sortiert wird.

Beispiel 1

Im ersten Beispiel sehen wir eine Reihe von Zahlen, die in einem Array sortiert werden. Zahlen sind am einfachsten zu sortieren, da es keine ASCII-Werte gibt, die mit Zahlen verknüpft sind, wie im Fall von Alphabeten oder Namen. Das folgende Programm zeigt die Sortierung in Mischsortierung und die Sortierung der Nummern in aufsteigender Reihenfolge. Es gibt zwei Arrays, nämlich das linke und das rechte Array. Das Array enthält 10 Zahlen, die in aufsteigender Reihenfolge angeordnet sind, d. H. Vom kleinsten zum größten.

Code

public class MyMergeSort
(
void merge(int arr(), int beg, int mid, int end)
(
intl = mid - beg + 1;
intr = end - mid;
intLeftArray() = newint (l);
intRightArray() = newint(r);
for(inti=0; i LeftArray(i) = arr(beg + i);
for(intj=0; j RightArray(j) = arr(mid + 1+ j);
inti = 0, j = 0;
intk = beg;
while(i (
if(LeftArray(i) <= RightArray(j))
(
arr(k) = LeftArray(i);
i++;
)
else
(
arr(k) = RightArray(j);
j++;
)
k++;
)
while(i (
arr(k) = LeftArray(i);
i++;
k++;
)
while(j (
arr(k) = RightArray(j);
j++;
k++;
)
)
voidsort(intarr(), int beg, int end)
(
if(beg (
intmid = (beg+end)/2;
sort(arr, beg, mid);
sort(arr, mid+1, end);
merge(arr, beg, mid, end);
)
)
publicstaticvoid main(String args())
(
intarr() = (90, 23, 101, 45, 65, 23, 67, 89, 34, 23);
MyMergeSort ob = newMyMergeSort();
sort(arr, 0, arr.length-1);
out.println("\nSorted array");
for(inti =0; i (
out.println(arr(i)+"");
)
)
)
public class MyMergeSort
(
void merge(int arr(), int beg, int mid, int end)
(
intl = mid - beg + 1;
intr = end - mid;
intLeftArray() = newint (l);
intRightArray() = newint(r);
for(inti=0; i LeftArray(i) = arr(beg + i);
for(intj=0; j RightArray(j) = arr(mid + 1+ j);
inti = 0, j = 0;
intk = beg;
while(i (
if(LeftArray(i) <= RightArray(j))
(
arr(k) = LeftArray(i);
i++;
)
else
(
arr(k) = RightArray(j);
j++;
)
k++;
)
while(i (
arr(k) = LeftArray(i);
i++;
k++;
)
while(j (
arr(k) = RightArray(j);
j++;
k++;
)
)
voidsort(intarr(), int beg, int end)
(
if(beg (
intmid = (beg+end)/2;
sort(arr, beg, mid);
sort(arr, mid+1, end);
merge(arr, beg, mid, end);
)
)
publicstaticvoid main(String args())
(
intarr() = (90, 23, 101, 45, 65, 23, 67, 89, 34, 23);
MyMergeSort ob = newMyMergeSort();
sort(arr, 0, arr.length-1);
out.println("\nSorted array");
for(inti =0; i (
out.println(arr(i)+"");
)
)
)
public class MyMergeSort
(
void merge(int arr(), int beg, int mid, int end)
(
intl = mid - beg + 1;
intr = end - mid;
intLeftArray() = newint (l);
intRightArray() = newint(r);
for(inti=0; i LeftArray(i) = arr(beg + i);
for(intj=0; j RightArray(j) = arr(mid + 1+ j);
inti = 0, j = 0;
intk = beg;
while(i (
if(LeftArray(i) <= RightArray(j))
(
arr(k) = LeftArray(i);
i++;
)
else
(
arr(k) = RightArray(j);
j++;
)
k++;
)
while(i (
arr(k) = LeftArray(i);
i++;
k++;
)
while(j (
arr(k) = RightArray(j);
j++;
k++;
)
)
voidsort(intarr(), int beg, int end)
(
if(beg (
intmid = (beg+end)/2;
sort(arr, beg, mid);
sort(arr, mid+1, end);
merge(arr, beg, mid, end);
)
)
publicstaticvoid main(String args())
(
intarr() = (90, 23, 101, 45, 65, 23, 67, 89, 34, 23);
MyMergeSort ob = newMyMergeSort();
sort(arr, 0, arr.length-1);
out.println("\nSorted array");
for(inti =0; i (
out.println(arr(i)+"");
)
)
)
public class MyMergeSort
(
void merge(int arr(), int beg, int mid, int end)
(
intl = mid - beg + 1;
intr = end - mid;
intLeftArray() = newint (l);
intRightArray() = newint(r);
for(inti=0; i LeftArray(i) = arr(beg + i);
for(intj=0; j RightArray(j) = arr(mid + 1+ j);
inti = 0, j = 0;
intk = beg;
while(i (
if(LeftArray(i) <= RightArray(j))
(
arr(k) = LeftArray(i);
i++;
)
else
(
arr(k) = RightArray(j);
j++;
)
k++;
)
while(i (
arr(k) = LeftArray(i);
i++;
k++;
)
while(j (
arr(k) = RightArray(j);
j++;
k++;
)
)
voidsort(intarr(), int beg, int end)
(
if(beg (
intmid = (beg+end)/2;
sort(arr, beg, mid);
sort(arr, mid+1, end);
merge(arr, beg, mid, end);
)
)
publicstaticvoid main(String args())
(
intarr() = (90, 23, 101, 45, 65, 23, 67, 89, 34, 23);
MyMergeSort ob = newMyMergeSort();
sort(arr, 0, arr.length-1);
out.println("\nSorted array");
for(inti =0; i (
out.println(arr(i)+"");
)
)
)
public class MyMergeSort
(
void merge(int arr(), int beg, int mid, int end)
(
intl = mid - beg + 1;
intr = end - mid;
intLeftArray() = newint (l);
intRightArray() = newint(r);
for(inti=0; i LeftArray(i) = arr(beg + i);
for(intj=0; j RightArray(j) = arr(mid + 1+ j);
inti = 0, j = 0;
intk = beg;
while(i (
if(LeftArray(i) <= RightArray(j))
(
arr(k) = LeftArray(i);
i++;
)
else
(
arr(k) = RightArray(j);
j++;
)
k++;
)
while(i (
arr(k) = LeftArray(i);
i++;
k++;
)
while(j (
arr(k) = RightArray(j);
j++;
k++;
)
)
voidsort(intarr(), int beg, int end)
(
if(beg (
intmid = (beg+end)/2;
sort(arr, beg, mid);
sort(arr, mid+1, end);
merge(arr, beg, mid, end);
)
)
publicstaticvoid main(String args())
(
intarr() = (90, 23, 101, 45, 65, 23, 67, 89, 34, 23);
MyMergeSort ob = newMyMergeSort();
sort(arr, 0, arr.length-1);
out.println("\nSorted array");
for(inti =0; i (
out.println(arr(i)+"");
)
)
)
public class MyMergeSort
(
void merge(int arr(), int beg, int mid, int end)
(
intl = mid - beg + 1;
intr = end - mid;
intLeftArray() = newint (l);
intRightArray() = newint(r);
for(inti=0; i LeftArray(i) = arr(beg + i);
for(intj=0; j RightArray(j) = arr(mid + 1+ j);
inti = 0, j = 0;
intk = beg;
while(i (
if(LeftArray(i) <= RightArray(j))
(
arr(k) = LeftArray(i);
i++;
)
else
(
arr(k) = RightArray(j);
j++;
)
k++;
)
while(i (
arr(k) = LeftArray(i);
i++;
k++;
)
while(j (
arr(k) = RightArray(j);
j++;
k++;
)
)
voidsort(intarr(), int beg, int end)
(
if(beg (
intmid = (beg+end)/2;
sort(arr, beg, mid);
sort(arr, mid+1, end);
merge(arr, beg, mid, end);
)
)
publicstaticvoid main(String args())
(
intarr() = (90, 23, 101, 45, 65, 23, 67, 89, 34, 23);
MyMergeSort ob = newMyMergeSort();
sort(arr, 0, arr.length-1);
out.println("\nSorted array");
for(inti =0; i (
out.println(arr(i)+"");
)
)
)
public class MyMergeSort
(
void merge(int arr(), int beg, int mid, int end)
(
intl = mid - beg + 1;
intr = end - mid;
intLeftArray() = newint (l);
intRightArray() = newint(r);
for(inti=0; i LeftArray(i) = arr(beg + i);
for(intj=0; j RightArray(j) = arr(mid + 1+ j);
inti = 0, j = 0;
intk = beg;
while(i (
if(LeftArray(i) <= RightArray(j))
(
arr(k) = LeftArray(i);
i++;
)
else
(
arr(k) = RightArray(j);
j++;
)
k++;
)
while(i (
arr(k) = LeftArray(i);
i++;
k++;
)
while(j (
arr(k) = RightArray(j);
j++;
k++;
)
)
voidsort(intarr(), int beg, int end)
(
if(beg (
intmid = (beg+end)/2;
sort(arr, beg, mid);
sort(arr, mid+1, end);
merge(arr, beg, mid, end);
)
)
publicstaticvoid main(String args())
(
intarr() = (90, 23, 101, 45, 65, 23, 67, 89, 34, 23);
MyMergeSort ob = newMyMergeSort();
sort(arr, 0, arr.length-1);
out.println("\nSorted array");
for(inti =0; i (
out.println(arr(i)+"");
)
)
)
public class MyMergeSort
(
void merge(int arr(), int beg, int mid, int end)
(
intl = mid - beg + 1;
intr = end - mid;
intLeftArray() = newint (l);
intRightArray() = newint(r);
for(inti=0; i LeftArray(i) = arr(beg + i);
for(intj=0; j RightArray(j) = arr(mid + 1+ j);
inti = 0, j = 0;
intk = beg;
while(i (
if(LeftArray(i) <= RightArray(j))
(
arr(k) = LeftArray(i);
i++;
)
else
(
arr(k) = RightArray(j);
j++;
)
k++;
)
while(i (
arr(k) = LeftArray(i);
i++;
k++;
)
while(j (
arr(k) = RightArray(j);
j++;
k++;
)
)
voidsort(intarr(), int beg, int end)
(
if(beg (
intmid = (beg+end)/2;
sort(arr, beg, mid);
sort(arr, mid+1, end);
merge(arr, beg, mid, end);
)
)
publicstaticvoid main(String args())
(
intarr() = (90, 23, 101, 45, 65, 23, 67, 89, 34, 23);
MyMergeSort ob = newMyMergeSort();
sort(arr, 0, arr.length-1);
out.println("\nSorted array");
for(inti =0; i (
out.println(arr(i)+"");
)
)
)

Die Beispielausgabe ist unten dargestellt. Der Code wird unter Verwendung der Blue J-Plattform ausgeführt, die das sortierte Array problemlos in aufsteigender Reihenfolge generiert.

Ausgabe

Beispiel 2

Im zweiten Beispiel werden sie arbeiten, wie Alphabete oder Namen oder sortiert mit der Merge-Sortiertechnik in Java. Im folgenden Programm nehmen wir die Namen von Personen in beliebiger Reihenfolge auf. Die einzelnen mergeSort () sortieren zuerst die Namen in alphabetischer Reihenfolge. Zweitens werden LeftMergeSort () und RightMergeSort () verglichen, um festzustellen, welcher Name alphabetisch früher oder später wäre.

Code

import java.util.*;
public class NewClass (
public static void main(String() args) (
String() OneGo = ( "Kring", "Panda", "Soliel", "Darryl", "Chan", "Matang", "Jollibee.", "Inasal" );
String() TwoGo = ( "Minnie", "Kitty", "Madonna", "Miley", "Zoom-zoom", "Cristine", "Bubbles", "Ara", "Rose", "Maria" );
String() nameGo = new String(OneGo.length + TwoGo.length);
mergeSort(OneGo);
mergeSort(TwoGo);
merge(nameGo, OneGo, TwoGo);
mergeSort(nameGo);
//Arrays.sort(names);
for (String ClassThree: nameGo) (
System.out.println(ClassThree);
)
)
public static void mergeSort(String() nameGo) (
if (nameGo.length > 1) (
String() leftGo = new String(nameGo.length / 2);
String() rightGo = new String(nameGo.length - nameGo.length / 2);
for (int so = 0; so < leftGo.length; so++) (
leftGo(so) = nameGo(so);
)
for (int ki = 0; ki < rightGo.length; ki++) (
rightGo(ki) = nameGo(ki + nameGo.length / 2);
)
mergeSort(leftGo);
mergeSort(rightGo);
merge(nameGo, leftGo, rightGo);
)
)
public static void merge(String() nameH, String() leftH, String() rightH) (
int as = 0;
int bs = 0;
for (int i = 0; i < nameH.length; i++) (
if (bs >= rightH.length || (as < leftH.length && leftH(as).compareToIgnoreCase(rightH(bs)) < 0)) (
nameH(i) = leftH(as);
as++;
) else (
nameH(i) = rightH(bs);
bs++;
)
)
)
)

Die Beispielausgabe in diesem Programm wird ebenfalls unten gezeigt, wobei die Namen in alphabetischer Reihenfolge sortiert werden.

Ausgabe

Fazit

In diesem Artikel erfahren Sie, wie das Sortieren durch Zusammenführen funktioniert und wie Zahlen und Namen in alphabetischer Reihenfolge sortiert werden. Merge sort ist sehr ähnlich zu Quick Sort. Sortieren zusammenführen ist relativ einfach zu handhaben als andere Sortiertechniken. Es ist anders als bei der Auswahlsortierung, bei der jedes Element miteinander verglichen wird. Mergesort wird in Java, C, C ++, Python und vielen anderen Programmiersprachen wegen seiner vielfältigen Vorteile verwendet. Es wird in FMCG-Unternehmen eingesetzt, denen Produkte mit unterschiedlichen Bezeichnungen und Nummern zugeordnet sind, in Telekommunikationsunternehmen, in der verarbeitenden Industrie sowie in der chemischen Industrie. Es ist eine sehr berühmte Sortiertechnik, da sie an zahlreichen Orten unterschiedlich eingesetzt wird.

Empfohlener Artikel

Dies war eine Anleitung zum Zusammenführen von Sort in Java. Hier wird eine Einführung in Merge Sort it anhand eines Beispiels erläutert. Sie können auch unsere anderen Artikelvorschläge durchgehen, um mehr zu erfahren -

  1. Java-Tools
  2. Frameworks In Java
  3. Destruktor in Java
  4. Anleitung zum Zusammenführen von Sortierungen in JavaScript
  5. Heap-Sortierung in Python
  6. Einfügesortierung in JavaScript