Johdanto yhdistämisjärjestykseen Java-sovelluksessa

Yhdistä lajittelu Java-sovelluksessa on yksi lajittelumenetelmistä. Lajittelu millä tahansa ohjelmointikielellä tarkoittaa tietojen järjestämistä peräkkäin. Järjestely saattaa olla nousevassa tai laskevassa järjestyksessä. Se riippuu täysin käyttäjästä siitä, mitä hän haluaa tilauksen olevan. Lajittelua käytetään lukujen lisäksi myös aakkosten ja nimien tapauksessa. Lajittelua käytetään rullien numeroinnissa luokan oppilaille. Lisäksi henkilölle, joka on ensin, annetaan sijoitus 1 lajittelualgoritmin mukaan. Lajittelua voidaan soveltaa joko sijoitukseen, painoon, pituuteen ja jopa vastaavien henkilöiden nimiin yleensä. Java-ohjelmassa on paljon lajittelutekniikoita, joita kooderit ja ohjelmoijat käyttävät laajasti varmistaakseen, että kaikista mahdollisista tietojen järjestämistavoista huolehditaan.

Jäljempänä kuvataan joitain suosittuja tekniikoita, joita Java käyttää algoritmien lajitteluun

  • Kuplalajittelu
  • Valintalajittelu
  • Lisäyslajittelu
  • Kasa lajittelu
  • Yhdistä lajittelu

Edellä mainittujen tekniikoiden lisäksi on myös muita tekniikoita, kuten Quicksort, voidaan käyttää datan lajitteluun peräkkäin.

Yhdistämisjärjestys Java-sovelluksissa

Yhdistämme lajittelun Java-ohjelmassa näemme John Von Neumannin vuonna 1945 keksimän yhdistämisjärjestelyn, jota käytetään Java-järjestelmässä järjestääkseen tietoja peräkkäin. Yhdistä lajittelu Java on melko samanlainen kuin pikalajittelumekanismi. Sitä kutsutaan myös Divide and Conquer -algoritmiksi. Yksinkertaisin sanoin se jakaa taulukon kahteen puolikkaaseen. Sen jälkeen se lajittelee nämä kaksi ryhmää vastaavaan järjestykseen käyttäjän toiveiden mukaisesti. Sitten lopuksi se yhdistää kaksi puolikkaata yhteen ja siitä tulee helposti kokonainen yksittäinen lajiteltu taulukko. Oletetaan, että on olemassa taulukko nimeltään arr (). Yhdistämisjärjestely jakaa taulukon ensin kahteen yhtä suureen puolikkaaseen. Sitten se lajittelee vastaavat puolikkaat, jolloin saadaan lajiteltu taulukko molemmista päistä. Lopuksi kaksi puolikasta yhtälöidään myös siitä, onko vasen hakemisto suurempi kuin oikea tai päinvastoin, ja sitten numero asetetaan taulukkoon. Tällä tavalla taulukko lajitellaan.

Alla oleva kaavio osoittaa, kuinka taulukko lajitellaan yhdistämislajittelulla.

Esimerkki 1

Ensimmäisessä esimerkissä näemme sarjan numeroita, jotka lajitellaan taulukkoon. Numerot on helpoin lajitella, koska numeroihin ei liity ASCII-arvoja, kuten aakkosten tai nimien tapauksessa. Seuraava ohjelma näyttää lajittelun yhdistelmälajittelumuodossa nousevassa järjestyksessä. On olemassa kaksi taulukkoa, ts. Vasen ja oikea taulukko. Ryhmässä on 10 numeroa, jotka on järjestetty nousevassa järjestyksessä, ts. Pienimmästä suurimpaan.

Koodi

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

Myös näytteen lähtö näkyy alla. Koodia käytetään Blue J -alustalla, joka tuottaa sujuvasti lajiteltua taulukkoa nousevassa järjestyksessä.

ulostulo

Esimerkki 2

Toisessa esimerkissä näemme heidän työskentelevän aakkosten tai nimien lajittelussa tai lajittelussa Java-yhdistämismenetelmällä. Seuraavassa ohjelmassa otamme henkilöiden nimet missä tahansa satunnaisessa järjestyksessä. Yksittäinen mergeSort () lajittelee nimet ensin aakkosjärjestyksessä. Toiseksi verrataan LeftMergeSort () ja RightMergeSort (), jotta nähdään, mikä nimi olisi aakkosjärjestyksessä aikaisempi tai myöhempi.

Koodi

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

Tämän ohjelman näytteen lähtö näkyy myös alla, joka lajittelee nimet aakkosjärjestykseen.

ulostulo

johtopäätös

Artikkelissa näemme, kuinka yhdistämisjärjestely toimii ja lajittelee numerot ja nimet sekä aakkosjärjestyksessä. Yhdistämislajittelu on hyvin samanlainen kuin pikalajittelu. Yhdistämislajittelu on suhteellisen helppo käyttää kuin muut lajittelutekniikat. Se on erilainen kuin valintalaji, joka vertaa kaikkia elementtejä toisiinsa. Yhdistämislajittelua käytetään Java-, C-, C ++-, Python- ja monissa muissa ohjelmointikielissä monipuolisten etujensa vuoksi. Sitä käytetään FMCG-yrityksissä, joissa tuotteilla on erilaisia ​​merkintöjä ja numeroita, telekommunikaatioyrityksissä, teollisuudessa ja kemianteollisuudessa. Se on erittäin kuuluisa lajittelutekniikka, koska sen käyttö vaihtelee monissa paikoissa.

Suositeltava artikkeli

Tämä on opas Yhdistä lajittelu Java -sovellukseen. Tässä keskustellaan johdannosta Yhdistä lajittele se työskentelemällä yhdessä esimerkin kanssa. Voit myös käydä läpi muiden ehdotettujen artikkeleidemme saadaksesi lisätietoja -

  1. Java-työkalut
  2. Kehykset Java
  3. Tuhoaja Java
  4. Opas yhdistämiseen Lajittele JavaScript-tilassa
  5. Heap Sort Pythonissa
  6. Lisäys Lajittele JavaScriptiin