Inleiding tot samenvoegen sorteren in Java

Sorteer samenvoegen in Java is een van de sorteermethoden. Sorteren in elke programmeertaal betekent dat de gegevens op een opeenvolgende manier moeten worden gerangschikt. Het arrangement kan in oplopende volgorde of in aflopende volgorde staan. Het hangt volledig van de gebruiker af wat hij / zij wil dat de bestelling is. Sorteren wordt niet alleen voor getallen gebruikt, maar ook voor alfabetten en namen. Sorteren wordt gebruikt bij het toewijzen van rolnummers aan studenten in een klas. De persoon die als eerste komt, krijgt ook rang 1 volgens het sorteeralgoritme. Sorteren kan worden toegepast op rang, gewicht, lengte en zelfs op de namen van de respectieve personen in het algemeen. Er zijn veel sorteertechnieken in Java die op grote schaal worden gebruikt door codeerders en programmeurs om ervoor te zorgen dat alle mogelijke manieren om gegevens te ordenen worden verzorgd.

Enkele van de populaire technieken die in Java worden gebruikt voor het sorteren van algoritmen, worden hieronder beschreven

  • Bellen soort
  • Selectie sorteren
  • Soort invoeging
  • Hoop soort
  • Sorteer samenvoegen

Afgezien van de bovengenoemde technieken, kunnen er ook andere technieken worden gebruikt voor het sequentieel sorteren van gegevens, zoals Quicksort.

Werken van Merge Sort In Java

In Merge Sort in Java gaan we de werking zien van het Merge Sort-mechanisme uitgevonden door John Von Neumann in het jaar 1945 dat in Java wordt gebruikt voor het sequentieel ordenen van gegevens. Sorteer samenvoegen in Java lijkt sterk op het Quick Sort-mechanisme. Het wordt ook een Divide and Conquer-algoritme genoemd. In eenvoudige woorden, het verdeelt de reeks in twee helften. Daarna sorteert het de twee arrays in een respectieve volgorde zoals gewenst door de gebruiker. Ten slotte worden de twee helften samengevoegd en wordt het gemakkelijk een volledig gesorteerde reeks. Stel nu dat er een array met de naam arr () is. Het sorteermechanisme samenvoegen verdeelt de array eerst in twee gelijke helften. Vervolgens sorteert het de respectieve helften en krijgt een gesorteerde reeks aan elk uiteinde. Ten slotte worden de twee helften ook gelijkgesteld of de linkerindex groter is dan de rechter of vice versa en vervolgens wordt het nummer in de array geplaatst. Op deze manier wordt de array gesorteerd.

Het onderstaande diagram toont hoe een array wordt gesorteerd met behulp van merge sort.

voorbeeld 1

In het eerste voorbeeld gaan we een reeks getallen in een array sorteren. Nummers zijn het gemakkelijkst te sorteren omdat er geen ASCII-waarden zijn die aan nummers zijn gekoppeld, zoals in het geval van alfabetten of namen. Het volgende programma toont het sorteren in sorteerwijze mode sorteernummers in oplopende volgorde. Er zijn twee arrays, dat wil zeggen de Left Array en de Right Array. De array heeft 10 nummers die in oplopende volgorde zijn gerangschikt, dat wil zeggen van klein naar groot.

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)+"");
)
)
)

Ook wordt de voorbeelduitvoer hieronder getoond. De code wordt uitgevoerd met behulp van het Blue J-platform dat soepel de gesorteerde array in oplopende volgorde genereert.

uitgang

Voorbeeld 2

In het tweede voorbeeld gaan we ze zien werken aan hoe alfabetten of namen of gesorteerd met behulp van de Merge sorteertechniek in Java. In het volgende programma nemen we de namen van personen in willekeurige volgorde. De afzonderlijke mergeSort () sorteert eerst de namen in alfabetische volgorde. Ten tweede worden de LeftMergeSort () en de RightMergeSort () vergeleken om te zien welke naam alfabetisch eerder of later zou zijn.

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++;
)
)
)
)

De voorbeelduitvoer in dit programma wordt ook hieronder getoond, waarbij de namen in alfabetische volgorde worden gesorteerd.

uitgang

Conclusie

In het artikel zien we hoe samenvoegen sorteert en getallen en namen sorteert in alfabetische volgorde. Sorteren samenvoegen lijkt erg op Snel sorteren. Sorteren samenvoegen is relatief eenvoudig te gebruiken dan andere sorteertechnieken. Het is in tegenstelling tot Selectie sorteren die elk element met elkaar vergelijkt. Merge sort wordt gebruikt in Java, C, C ++, Python en vele andere programmeertalen vanwege de gevarieerde voordelen. Het wordt gebruikt in FMCG-bedrijven waaraan producten verschillende labels en nummers hebben, in telecommunicatiebedrijven, in de industrie en in de chemische industrie. Het is een zeer beroemde sorteertechniek vanwege het gevarieerde gebruik op tal van plaatsen.

Aanbevolen artikel

Dit is een handleiding voor het samenvoegen van sorteren in Java. Hier bespreken we een inleiding tot Samenvoegen sorteren, samen met voorbeeld. U kunt ook onze andere voorgestelde artikelen doornemen voor meer informatie -

  1. Java-hulpmiddelen
  2. Frameworks in Java
  3. Destructor in Java
  4. Handleiding voor samenvoegen Sorteren in JavaScript
  5. Heap Sort in Python
  6. Invoegsortering in JavaScript