Uvod o sortiranju umetanja u Javi
Ako ste programer, sigurno ste već čuli za razvrstavanje. Razvrstavanje je u osnovi raspoređivanje elemenata bilo uzlaznim ili silaznim redoslijedom. Na raspolaganju je toliko mnogo algoritama za razvrstavanje elemenata i svaki algoritam ima različite načine sortiranja, različite složenosti. Dakle, to ovisi o konkretnom scenariju i broju elemenata za koji se algoritam treba koristiti. Umetanje je također jedan od najčešće korištenih algoritama za razvrstavanje koji ima složenost O (n 2) općenito i izvodi se kao da sortiramo igraće karte u našim rukama. U ovoj ćemo temi naučiti o sortiranju umetanja u Javi.
Kako sortiranje umetanja djeluje na Javi?
Shvatimo funkcioniranje sortiranja umetanja pomoću primjera. Pretpostavimo da postoji niz s imenom arr koji sadrži dolje navedene elemente:
10 5 8 20 30 2 9 7
Korak # 1 - Umetanje sortiranja započinje s 2. elementom polja, tj. 5, s obzirom na 1. element polja koji je sam u sebi. Sada se element 5 uspoređuje s 10 jer je 5 manje od 10, pa je 10 pomaknuto 1 mjesto naprijed, a 5 je ubačeno ispred njega.
Sada je rezultirajući niz:
5 10 8 20 30 2 9 7
Korak # 2 - Sada se element arr (2), tj. 8 uspoređuje sa arr elementa (1), tj. 10. Kako je 8 manja od svog prethodnog elementa 10, pomaknuo se jedan korak unaprijed od svog položaja i tada je u usporedbi s 5. Kako je 8 veće od 5, tako se i nakon njega umeće.
Tada je rezultirajući niz:
5 8 10 20 30 2 9 7
Korak # 3 - Sada se element 20 uspoređuje s 10 jer je veći od 10, ostaje u svom položaju.
5 8 10 20 30 2 9 7
Korak # 4 - Element 30 uspoređuje se s 20, a budući da je veći od 20, ne bi se napravile nikakve promjene i niz ostaje takav kakav jest. Sad bi se nalazio niz
5 8 10 20 30 2 9 7
Korak # 5 - Element 2 uspoređuje se s 30, jer je manji od 30, pomiče se za jedno mjesto naprijed, a zatim se uspoređuje s 20, 10, 8, 5, jedan po jedan i svi se elementi pomaknu u 1 položaj ispred i 2 je umetnuta prije 5.
Rezultirajući niz je:
2 5 8 10 20 30 9 7
Korak # 6 - Element 9 uspoređuje se sa 30 jer je manji od 30, uspoređuje se sa 20, 10 jedan po jedan i element se pomiče za 1 poziciju naprijed, a 9 se umeće ispred 10 i nakon 8. Rezultat je niz:
2 5 8 9 10 20 30 7
Korak br. 7 - Element 7 uspoređuje se s 30, a budući da je manji od 30, on se uspoređuje sa 30, 20, 10, 9, 8 i svi su elementi pomaknuti jedan položaj naprijed jedan za drugim i 7 je ubačen prije 8 . Rezultirajući niz postao bi:
2 5 7 8 9 10 20 30
Na taj se način svi elementi matrice sortiraju korištenjem vrste umetanja započinjući usporedbom s prethodnim elementom.
Primjeri za implementaciju Insertion Sort u Javi
Umetanje sortiranja u Javi jednostavan je algoritam sortiranja pogodan za sve male skupove podataka.
public class InsertionSort (
public static void insertionSort(int arr()) ( for (int j = 1; j < arr.length; j++) ( int key = arr(j); int i = j-1;
while ( (i > -1) && ( arr(i) > key ) ) ( arr(i+1) = arr(i); i--; )
arr(i+1) = key;
)
)
static void printArray(int arr()) ( int len = arr.length;
//simple for loop to print the elements of sorted array for (int i= 0; i System.out.print(arr(i) + " " );
System.out.println();
)
public static void main(String args())( int() arr1 = (21, 18, 15, 23, 52, 12, 61);
//calling the sort function which performs insertion sort insertionSort(arr1);
//calling the printArray function which performs printing of array printArray(arr1);
)
)public class InsertionSort (
public static void insertionSort(int arr()) ( for (int j = 1; j < arr.length; j++) ( int key = arr(j); int i = j-1;
while ( (i > -1) && ( arr(i) > key ) ) ( arr(i+1) = arr(i); i--; )
arr(i+1) = key;
)
)
static void printArray(int arr()) ( int len = arr.length;
//simple for loop to print the elements of sorted array for (int i= 0; i System.out.print(arr(i) + " " );
System.out.println();
)
public static void main(String args())( int() arr1 = (21, 18, 15, 23, 52, 12, 61);
//calling the sort function which performs insertion sort insertionSort(arr1);
//calling the printArray function which performs printing of array printArray(arr1);
)
)
Izlaz:
12 15 18 21 23 52 61
Obrazloženje:
U gornjem programu sortiranja umetanja funkcija SortSS () koristi se za razvrstavanje elemenata izvornog niza. Razvrstavanje započinje od drugog elementa jer prvi element smatra samim razvrstanim. Dakle, petlja 'j' počinje od indeksa 1 matrice. 'i' je varijabla koja slijedi indeks neposredno prije 'j' kako bi se usporedila vrijednost. ' tipka 'je varijabla koja drži vrijednost trenutnog elementa koji se raspoređuje u poredani položaj. while () petlja se izvodi ako je trenutna vrijednost manja od najmanje lijeve vrijednosti, tako da se pomicanje elemenata može obraditi i na kraju umetanje trenutnog elementa u pravi položaj. printArray () funkcija se koristi za konačno ispis razvrstanog niza.
1. Najbolji slučaj
U vrsti umetanja, najbolji bi slučaj bio kada su svi elementi niza već razvrstani. Dakle, kada se bilo koji element uspoređuje s njegovim lijevim lijevim elementom, uvijek je veći i stoga se neće mijenjati pomicanje i umetanje elemenata. U ovom slučaju, najbolja složenost slučaja bila bi linearna, tj. O (n).
2. Najgori slučaj
U gornjoj šifri umetanja, najgori slučaj bi bio kada je niz obrnutim redoslijedom, tako da je svaki put kad se element uspoređuje s krajnjim lijevim elementom, uvijek manji i tada se uspoređuje sa svim nadolazećim elementima koji se odvijaju i premještaju a umetanje se vrši. U ovom slučaju, složenost vrste umetanja je O (n 2).
3. Prosječni slučaj
Čak i u prosječnom slučaju, vrsta umetanja ima složenost O (n 2) u kojoj neki elementi ne zahtijevaju pomicanje dok su neki elementi pomaknuti iz svojih položaja i umetanje u pravi položaj.
4. Najbolje korištenje
Razvrstavanje umetanja najbolje je upotrijebiti kad veličina niza nije velika ili je potrebno sortirati samo mali broj elemenata u kojem su sortirani gotovo svi elementi i trebaju se izvršiti samo neke promjene. Umetanje sortiranje je jedan od najbržih algoritama za niz malih dimenzija, čak i brži od brzog sortiranja. U stvari, quicksort koristi sortiranje umetanja prilikom sortiranja svojih malih dijelova niza.
Zaključak
Gornje objašnjenje jasno pokazuje rad i provedbu Insertion Sort u Javi. I u ostalim programskim jezicima, logika izvođenja umetanja ostaje ista, samo se sintaksa mijenja. Prije implementacije bilo kojeg algoritma sortiranja, vrlo je važno napraviti neku analizu scenarija gdje je potrebno izvršiti razvrstavanje jer se svaki algoritam sortiranja ne uklapa u sve scenarije.
Preporučeni članci
Ovo je vodič za sortiranje umetanja u Javi. Ovdje smo raspravljali o načinu na koji sortiranje umetanja djeluje u Javi s primjerima za implementaciju Insertion Sort u Javi. Možete također pogledati sljedeće članke da biste saznali više -
- Kvadratni korijen u Javi
- BorderLayout u Javi
- Obrnuti broj u Javi
- StringBuffer na Javi
- Kvadratni korijen u PHP-u
- Kvadratni korijen u JavaScript
- Vodič za top 6 sortiranja algoritama na Pythonu