Úvod do zlúčenia zoradenia v jazyku Java

Zlúčiť triedenie v Jave je jednou z metód triedenia. Triedenie v ľubovoľnom programovacom jazyku znamená usporiadanie údajov sekvenčným spôsobom. Usporiadanie môže byť v vzostupnom alebo zostupnom poradí. Úplne záleží na užívateľovi, čo chce, aby bol príkaz. Triedenie sa používa nielen pre čísla, ale aj pre abecedy a názvy. Triedenie sa používa pri prideľovaní čísel hodenia študentom v triede. Osobe, ktorá je na prvom mieste, sa tiež pridelí poradie 1 podľa triediaceho algoritmu. Zoradenie je možné použiť buď na hodnosť, váhu, výšku a dokonca na mená príslušných osôb všeobecne. V Jave je veľa triediacich techník, ktoré sú vo veľkej miere využívané programátormi a programátormi, aby sa zabezpečilo, že sa budú starať o všetky možné spôsoby usporiadania údajov.

Niektoré populárne techniky používané v Java na triedenie algoritmu sú opísané nižšie

  • Zoradenie bubliniek
  • Výber zoradenia
  • Zoradenie vloženia
  • Hromadu
  • Zlúčiť zoradenie

Okrem vyššie uvedených techník sa na postupné triedenie údajov môžu použiť aj iné techniky, napríklad Quicksort.

Spracovanie zlúčenia zoradenia v jazyku Java

V oblasti Merge Sort in Java sa pozrieme na fungovanie mechanizmu Merge Sort, ktoré vynašiel John Von Neumann v roku 1945 a ktorý sa používa v Java na účely postupného usporiadania údajov. Zlúčiť zoradenie v jazyku Java je veľmi podobné mechanizmu rýchleho zoradenia. Nazýva sa aj algoritmus delenia a dobývania. Jednoducho povedané, rozdeľuje pole na dve polovice. Potom zoradí obidve polia v príslušnom poradí podľa požiadaviek používateľa. Nakoniec zlúči dve polovice a ľahko sa stane kompletným jedným zoradeným radom. Teraz predpokladajme, že existuje pole s názvom arr (). Mechanizmus zlúčenia zoradenia rozdeľuje pole najskôr na dve rovnaké polovice. Potom triedi príslušné polovice tak, že získa zoradené pole na každom konci. Nakoniec sa obe polovice rovnajú, či je ľavý index väčší ako pravý alebo naopak a potom je číslo vložené do poľa. Týmto spôsobom je pole zoradené.

Nižšie uvedený diagram ukazuje, ako je pole zoradené pomocou zlúčenia.

Príklad 1

V prvom príklade uvidíme rad čísel usporiadaných do poľa. Čísla sa najľahšie triedia, pretože neexistujú žiadne hodnoty ASCII, ktoré sú priradené k číslam ako v prípade abeced alebo názvov. Nasledujúci program zobrazuje zoradenie čísel triedenia podľa zlučovania módov vo vzostupnom poradí. Existujú dve polia, a to ľavá a pravá. Pole má 10 čísel, ktoré sú usporiadané vzostupne, tj od najmenších po najväčšie.

kód

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

Ďalej je uvedený výstup vzorky. Kód sa spúšťa pomocou platformy Blue J, ktorá plynulo generuje zoradené pole v vzostupnom poradí.

Výkon

Príklad 2

V druhom príklade ich uvidíme, ako pracujú na tom, ako abecedy alebo názvy alebo zoradené pomocou technológie Merge sort v Java. V nasledujúcom programe berieme mená osôb v ľubovoľnom náhodnom poradí. Jednotlivé mergeSort () najprv triedia mená v abecednom poradí. Po druhé, porovnajú sa LeftMergeSort () a RightMergeSort (), aby sa zistilo, ktorý názov by bol abecedne skorší alebo neskorší.

kód

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

Vzorový výstup v tomto programe je tiež uvedený nižšie, ktorý triedi názvy podľa abecedy.

Výkon

záver

V článku vidíme, ako zlučovanie funguje, a triedi čísla a mená v abecednom poradí. Zlúčiť zoradenie je veľmi podobné rýchlemu triedeniu. Zlučovanie triedenia je relatívne jednoduché použitie ako iné spôsoby triedenia. Na rozdiel od druhu výberu, ktorý navzájom porovnáva každý prvok. Zlúčiť zoradenie sa používa v jazykoch Java, C, C ++, Python a v mnohých ďalších programovacích jazykoch pre svoje rôzne výhody. Používa sa v spoločnostiach FMCG, kde im produkty majú pridelené rôzne štítky a čísla, v telekomunikačných spoločnostiach, vo výrobe aj v chemickom priemysle. Je to veľmi známa technika triedenia kvôli jej rôznorodému použitiu na mnohých miestach.

Odporúčaný článok

Toto bol sprievodca zlúčením triedenia v jazyku Java. V tejto časti uvádzame úvod do služby Zlúčiť triedenie spolu s príkladom. Viac informácií nájdete aj v ďalších navrhovaných článkoch -

  1. Java Tools
  2. Rámce v Jave
  3. Destruktor v Jave
  4. Sprievodca zlúčením zoradiť v JavaScripte
  5. Halda Zoradiť v Pythone
  6. Vloženie Zoradiť v JavaScripte

Kategórie: