Johdanto lajitteluun Java

  • Java-lajittelu on pohjimmiltaan jonkin tietyn järjestyksen mukaiseen ryhmään tallennettujen elementtien järjestämistä. Tämä järjestys voi olla sekä nouseva että laskeva. Reaaliaikaisessa ohjelmoinnissa on monia skenaarioita, joissa on tarpeen lajitella elementit, koska se tekee myös etsinnästä tietty elementti on helppoa, koska elementit voidaan noutaa helposti indeksoimalla taulukot suoraan, jos ne lajitellaan. Lajiteltavat elementit voidaan tallentaa joko taulukkoon tai kokoelmaan. Kokoelma on monentyyppinen Java-tyyppisissä sarjoissa, puissa, kartassa, kasaan, luettelossa jne., Vaikkakin on olemassa erityyppisiä lajittelualgoritmeja, joita käytetään elementtien lajitteluun matriisimaisessa Bubble Sort, Heap Sort, Insertion Sort, Valintalajittelu, Yhdistä lajittelu jne.
  • Ohjelmoijat käyttävät erilaisia ​​algoritmeja lajitellakseen elementit niiden erityisten vaatimusten ja algoritmien monimutkaisuuden perusteella. Nämä lajittelualgoritmit toteutetaan käyttämällä erilaisia ​​silmukoita ja muuttujia iteroimaan sen läpi. Sen lisäksi, että lajittelualgoritmeja käytetään ryhmän elementtien lajitteluun, Java tarjoaa myös sisäänrakennetun lajittelutoiminnon, joka voi auttaa samassa. Ohjelmoijan ei tarvitse olla kiinni isoissa silmukoissa ja miettiä monimutkaisuutta. Kyllä, olet kuullut oikein, Java-lajittelussa () -toimintoa käytetään lajittelemaan joko taulukkoon tai kokoelmaan tallennetut elementit ja o (n (logn)) -asetuksella. Vaikka menetelmän toteutus molemmissa on hiukan erilainen.

Ryhmien syntaksi:

Arrays.sort(array_name);

Kokoelmiin

Collections.sort(array_name_list);

  • Tässä taulukon_nimi ja taulukon_nimi_luettelo on taulukon tai kokoelman nimi, joka on lajiteltava.
  • Taulukot ovat Java-luokkien nimi.
  • Kokoelma on Java-kehyksen puitteet.
  • sort () on Java-sovelluksessa käytetty sisäinen lajittelutoiminto.

Kuinka lajittelu suoritetaan Java-ohjelmassa?

Seuraavat kohdat ovat seuraavat:

  • Lajittelualgoritmien avulla lajittelu voidaan suorittaa myös algoritmeilla, jotka vaihtelevat tehottomasta toiseen ja jokaisella algoritmilla on oma aikansa ja tilansa monimutkaisuus.
  • Joskus nämä algoritmit ovat erittäin monimutkaisia, etteivät niitä voida käyttää todellisissa tilanteissa, joissa on tarpeen käsitellä suuria määriä tietoja.
  • Kuten edellä mainittiin, Java-sisäänrakennetussa toiminnossa lajittelua () käytetään lajittelemaan kaikki taulukon ja kokoelman elementit. Virallisen Java DOC: n mukaan Array.sort käyttää pikavalintaa, joka on kaksinkertainen nivel ja suhteellisen paljon nopeampi kuin yksisivun pikalajittelu.
  • Yksi tämän suurimmista eduista on, että se tarjoaa monimutkaisuuden O (n (logn)). Se käyttää Merge Sort -taulukko-objektin erittäin vakaata ja iteratiivista toteutusta. Java tarjoaa menetelmän taulukon lajitteluun myös käänteisessä järjestyksessä ohjelmoijan vaatimuksen mukaan lajitella joko nousevassa tai laskevassa järjestyksessä. Kokoelmat.reverseOrder () -menetelmää käytetään elementtien lajitteluun käänteisessä tai laskevassa järjestyksessä.
  • Java 8 tarjoaa myös mahdollisuuden lajitella matriisit rinnakkain käyttämällä Parallel-lajittelua, joka käyttää Java: n monisäikeistä konseptia jakaa koko taulukon osiin ja yhdistää ne lajittelun jälkeen.

Lajittelulajit Java-ohjelmassa

Seuraavassa on joitain tapoja, joilla lajittelu voidaan suorittaa Java-lajittelussa:

1. lajitella (taulukon_nimi)

Tätä käytetään lajittelemaan koko matriisi nousevassa järjestyksessä. Oletuksena tämä menetelmä lajittelee matriisielementit nousevassa järjestyksessä.

Koodi:

import java.util.Arrays;
public class SimpleSort
(
public static void main(String() args)
(
//Unsorted array of numbers
Integer() arr = new Integer() (100, 20, 10, 30, 80, 70, 90, 40, 50, 60);
//Sort function to sort the above array
Arrays.sort(arr);
//Printing the sorted array on console
System.out.println(Arrays.toString(arr));
)
)

lähtö:

2. Collection.reverseOrder ()

Tätä Java-menetelmää käytetään taulukon lajitteluun käänteisessä tai laskevassa järjestyksessä. On skenaarioita, joissa elementit on lajiteltava alenevassa järjestyksessä, ja Java tekee sen sisäänrakennetun menetelmän avulla.

Koodi:

import java.util.Arrays;
public class ReverseSort
(
public static void main(String() args)
(
//Unsorted array of numbers
Integer() arr = new Integer() ( 100, 20, 10, 30, 80, 70, 90, 40, 50, 60);
//Sort function to sort the above array
Arrays.sort(arr, Collections.reverseOrder());
//Printing the sorted array on console
System.out.println(Arrays.toString(arr));
)
)

lähtö:

3. lajitella (int () matriisin_nimi, int findex, int lindex)

Jos on tarpeen lajitella jokin osa taulukosta koko taulukon sijasta, Java tarjoaa mahdollisuuden lajitella tämän tyyppinen taulukko määrittelemällä 3 parametria, ts. Taulukon nimi, ensimmäinen hakemisto, josta lajittelu on aloitettava, ja viimeinen indeksoi siihen asti, kun lajittelu on tehtävä.

Koodi:

import java.util.Arrays;
public class ReverseSort
(
public static void main(String() args)
(
//Unsorted array of numbers
Integer() arr = new Integer() ( 100, 20, 10, 30, 80, 70, 90, 40, 50, 60);
//Sort function to sort the above array
Arrays.sort(arr, 1, 5);
//Printing the sorted array on console
System.out.println(Arrays.toString(arr));
)

lähtö:

4. Arrays.parllelSort (taulukon_nimi)

Java 8: sta on julkaistu uusi rinnakkaistyyppinen sovellusliittymä. Periaatteessa rinnakkaislajittelussa taulukko on jaettu 2 alaryhmään, ja sitten Array.sort () -toiminto suoritetaan erillisellä säieellä. Lajitellut taulukot yhdistetään sitten lopussa täysin lajiteltuun taulukkoon. Tämä tehdään monisäikeisen käytön hyödyntämiseksi.

Koodi:

import java.util.Arrays;
public class ParallelSort
(
public static void main(String() args)
(
//Unsorted array of numbers
Integer() arr = new Integer() ( 100, 20, 10, 30, 80, 70, 90, 40, 50, 60);
//parallel Sort function to sort the above array
Arrays.parallelSort(arr);
//Printing the sorted array on console
System.out.println(Arrays.toString(arr));
)
)

lähtö:

Kuten normaali Array.sort (), Arrays.parallelSort () tarjoaa myös mahdollisuuden lajitella tietyn taulukon alue tai lajitella taulukko käänteisessä järjestyksessä.

Syntaksi:

// to Sort a range of array by parallelsort
Arrays.parallelSort(array_name, findex, lindex);
// to sort an array in reverse order using parallelSort
Arrays.parallelSort(array_name, Collections.reverseOder());

5. Kokoelma.sort ()

Tätä menetelmää käytetään lajittelemaan kokoelmat kuten luettelo, kartta, joukko jne. Se käyttää yhdistämislajittelua ja antaa saman monimutkaisuuden kuin Array.sort (), eli O (n (logn)).

1. Lajittele luettelo nousevassa järjestyksessä

Koodi:

import java.util.Arrays;
import java.util.Collections;
public class ListSort
(
public static void main(String() args)
(
//Unsorted list
Integer() arr = new Integer() ( 100, 20, 10, 30, 80, 70, 90, 40, 50, 60 );
List arrList = Arrays.asList(arr);
//Sorting of list using the method
Collections.sort(arrList);
//Printing the list sorted above
System.out.println(arrList);
)
)

lähtö:

2. Matriisilistan lajittelu alenevassa järjestyksessä

Koodi:

import java.util.Arrays;
import java.util.Collections;
public class ListSortRev
(
public static void main(String() args)
(
//Unsorted array list of Integers
Integer() arr = new Integer() (100, 20, 10, 30, 80, 70, 90, 40, 50, 60 );
List arrList = Arrays.asList(arr);
//Sorting of list using the method
Collections.sort(arrList);
//Printing the list sorted above
System.out.println(arrList);
)
)

lähtö:

3. Sarjan lajittelu

Kokoelmaa 'Set' lajiteltaessa yllä olevalla menetelmällä (array_name) on 3 perussääntöä:

    1. Muunna sarja luetteloon.
    2. Lajittele luettelo menetelmällä lajitella (taulukon_nimi).
    3. Muunna tuloksena saatu lajiteltu luettelo takaisin asetukseksi.

Koodi:

List numList = new ArrayList(num) ;
//Sorting the list retrieved above
Collections.sort(numList);
// Converting sorted List into Set
num = new LinkedHashSet(numList);
//Printing the Resulting Set on console
System.out.println(num);
)
)

lähtö:

4. Lajittele kartta

Java-kokoelmakartta on yhdistelmä avainta ja arvoa, joten lajittelu voidaan tehdä molemmin puolin joko avaimen kautta tai arvon perusteella.

  • Lajittele kartta avaimella: Katsotaan alla olevaa esimerkkiä kartan järjestämisestä avaimella.

Koodi:

import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;
public class SortHashKey
(
public static void main(String() args)
(
HashMap map = new HashMap();
map.put(80, "Akshay");
map.put(20, "Akash");
map.put(10, "Bob");
map.put(30, “Nitika");
map.put(90, "Yashi");
map.put(100, "Dragisa");
TreeMap treeMap = new TreeMap(map);
System.out.println(treeMap);
)
)

lähtö:

Yksi helpoimmista tavoista lajitella kartan elementit avaimien mukaan on lisäämällä lajittelemattomat karttoelementit TreeMap-kenttään. TreeMap lajittelee elementit automaattisesti hasakelojen nousevassa järjestyksessä. Vaikka kokoelmaa.sort () voidaan käyttää myös tekemään samoin, se on hieman monimutkainen ja se on koodattava hyvin.

  • Lajittele kartta arvon mukaan: Alla mainittu on esimerkki siitä, kuinka lajittelu voidaan tehdä kartalla arvoa käyttämällä.

Koodi:

import java.util.HashMap;
import java.util.Map;
import java.util.Comparator;
import java.util.LinkedHashMap;
import java.util.Map;
public class SortHashValue
(
public static void main(String() args)
(
HashMap map = new HashMap(); map.put(80, "Akshay");
map.put(20, "Akash");
map.put(10, "Bob");
map.put(30, “Nitika");
map.put(90, "Yashi");
map.put(100, "Dragisa");
LinkedHashMap sorted = new LinkedHashMap(); map.entrySet()
.stream()
.sorted(Map.Entry.comparingByValue())
.forEachOrdered(x -> sorted.put(x.getKey(), x.getValue()));

lähtö:

Yllä olevassa esimerkissä kartan lajittelusta arvon perusteella asetetaan ensin merkinnät map.entrySet (): llä ja sitten näiden merkintöjen virta stream () -menetelmällä, kutsutaan lajiteltu taulukko lajiteltu () -menetelmällä vertaamalla arvoa pari. kutakin tilattua () käytetään virran kulkemiseen tuloksen tuottamiseksi.

5. Vertailukelpoinen

Vertailukelpoinen on käyttöliittymä, ja se tekee luokista vertailukelpoisia sen esiintymien kanssa.

Saman luokan kahden esiintymän vertailemiseksi on otettava käyttöön vertailukelpoinen käyttöliittymä, ja menetelmä salīdzTo () -menetelmä on korvattava. Luokat, jotka toteuttavat tämän käyttöliittymän, sen objektiluettelo lajitellaan automaattisesti menetelmillä Collections.sort () ja Arrays.sort ().

Koodi:

ArrayList list = new ArrayList();
// Adding the instance objects of class Employee in list
list.add(new Employee(10, "Akshay")));
list.add(new Employee(40, "Bob")));
list.add(new Employee(20, "Priyansh")));
list.add(new Employee(50, "Chandni")));
list.add(new Employee(70, "Yashi")));
Collections.sort(list);
// Printing the sorted list on Console
System.out.println(list);

lähtö:

johtopäätös

Yllä selitetään Java-lajittelu -menetelmät, joita käytetään Java-ohjelmassa monissa matriisien ja kokoelmien skenaarioissa. Ohjelmoijan on pidettävä mielessä, kuinka lajittelu () -menetelmää tulisi käyttää eri kokoelmatyypeille. Java 8: n avulla lajittelu voidaan tehdä myös Lambdan kautta Comparator-käyttöliittymän toteuttamiseksi, mikä helpottaa lajittelua. Vaikka niiden kaikkien oppiminen on hiukan vaikeaa, voi olla helppoa työskennellä heidän kanssaan, jos kaikki Java-peruskäsitteet, etenkin tiedonsiirto, ryhmät ja kokoelmat, ovat selkeät. Vaikka lajittelualgoritmit ovat ikivihreitä ja ne voidaan helposti toteuttaa Java-tyyppisissä muissa ohjelmointikielissä, ne ovat monimutkaisia ​​ja Java-sovelluksen sisäänrakennettu funktiolaji () helpottaa asioita, jos peruskäsitteet oppivat sydämeltä.

Suositellut artikkelit

Tämä on opas lajitteluun Java-sovelluksessa. Tässä keskustellaan kuinka lajittelu sujuu Java: ssa ja lajittelutyypit javassa eri koodeilla ja ulostuloilla. Voit myös käydä läpi muiden aiheeseen liittyvien artikkeleidemme saadaksesi lisätietoja-

  1. JComboBox Java
  2. Lajittelu C: ssä
  3. Kasa Lajittele C: ssä
  4. Kupla Lajittele JavaScript
  5. Mitä on lajittelu C ++: ssa?
  6. Johdanto lajitteluun PHP: ssä
  7. Heap Sort Pythonissa
  8. Lisäys Lajittele JavaScriptiin
  9. Hashmap Java-sovelluksessa
  10. Vertailukelpoinen Java-esimerkissä | Kokoelman käyttöliittymä Java