QuickSort on jakamis- ja valloitusalgoritmi. Divide & Conquer -algoritmisuunnitteluparadigmassa jaamme ongelmat alaongelmiin rekursiivisesti, sitten ratkaisemme alaongelmat ja viimeinkin yhdistämme ratkaisut lopullisen tuloksen löytämiseksi. Tässä artikkelissa keskitymme QuickSort In -ohjelmaan
Seuraavat vihjeet käsitellään tässä artikkelissa,
php: n asettaminen Windowsiin
Aloitetaanpa!
Yksi asia, joka on pidettävä mielessä jaettaessa ongelmat alaongelmiin, on se, että alaongelmien rakenne ei muutu alkuperäisestä ongelmasta.
Divide & Conquer -algoritmilla on 3 vaihetta:
- Divide: ongelman jakaminen osahäiriöiksi
- Valloitus: Aiheiden rekursiivinen ratkaisu
- Yhdistä: Yhdistämällä ratkaisut lopullisen tuloksen saamiseksi
Divide & Conquer -paradigmaan perustuvia algoritmeja on useita. Nopea lajittelu ja yhdistäminen-lajittelu ovat niiden joukossa.
Vaikka QuickSortin huonoin tapa-ajan monimutkaisuus on O (n2), joka on enemmän kuin monet muut lajittelualgoritmit, kuten Yhdistä lajittelu ja Heap Sort, QuickSort on käytännössä nopeampi, koska sen sisäinen silmukka voidaan toteuttaa tehokkaasti useimmissa arkkitehtuureissa ja useimmissa reaalimaailman tiedot.
Puhutaan pikalajittelualgoritmin toteuttamisesta. Quicksort-algoritmit ottavat pivot-elementin ja jakavat matriisin pivot-elementin ympärille. Quicksotissa on useita muunnelmia, jotka riippuvat siitä, kuinka valitset pivot-elementin. Pivot-elementti voidaan valita useilla tavoilla:
- Ensimmäisen elementin valitseminen
- Valitse viimeinen elementti
- Satunnaisen elementin valitseminen
- Mediaanielementin valinta
Seuraava tärkeä asia, joka on ymmärrettävä, on partition () -toiminto Quick sort algoritmissa. Osiointitoiminto kääntöelementin ottamiseksi, sijoittaa sen oikeaan asentoon, siirtää kaikki kääntöelementtiä pienemmät elementit vasemmalle ja kaikki suuremmat oikealle. Quicksort vie lineaarista aikaa siihen.
Sitten taulukko jaetaan kahteen osaan pivot-elementistä (ts. Elementit, jotka ovat vähemmän kuin pivot & elementit, jotka ovat suurempia kuin pivot), ja molemmat matriisit lajitellaan rekursiivisesti Quicksort-algoritmilla.
Nyt kun ymmärrämme QuickSort-algoritmin toiminnan. Ymmärretään, miten Quicksort-algoritmi voidaan toteuttaa Java-sovelluksessa.
QuickSort Tehtävä:
/ * Quicksort-toiminto edellyttää, että taulukko on lajiteltu alimmalla ja suurimmalla indeksillä * /
void sort (int arr [], int lowIndex, int highIndex) {// Kunnes lowIndex = highIndex if (lowIndexKatsokaamme nyt osiokoodia ymmärtämään, miten se toimii.
Osio Koodi
Valitaan osiokoodissa viimeinen elementti pivot-elementiksi. Käymme läpi koko matriisin (ts. Käytämme muuttujaa j tapauksessamme). Seuraamme taulukon viimeistä pienintä elementtiä (ts. Käytämme muuttujaa i tapauksessamme). Jos löydämme pienemmän elementin kuin kääntö, siirrämme vaihtamaan nykyisen elementin a [j] arr [i]: llä, muuten jatkamme kulkemista.
int-osio (int arr [], int lowIndex, int highIndex) {// Viimeisen elementin tekeminen kääntönä int pivot = arr [highIndex] // i: n avulla seurataan pienempiä elementtejä pivotista int i = (lowIndex-1) for (int j = matala-indeksi jNyt kun olet ymmärtänyt Quicksort & partition -toiminnon, katsokaamme nopeasti koko koodi
QuickSort Java-koodi
luokka QuickSort {// osiomenetelmä int osio (int arr [], int lowIndex, int highIndex) {int pivot = arr [highIndex] int i = (lowIndex-1) kohteelle (int j = lowIndex j// Lajittelutapa
void sort (int arr [], int lowIndex, int highIndex) {if (lowIndex// Menetelmä taulukon tulostamiseksi
staattinen void printArray (int arr []) {int n = arr.length for (int i = 0 i// Päämenetelmä
c ++ matriisilajittelupublic static void main (String args []) {int arr [] = {101, 37, 68, 29, 11, 5} int n = arr.length QuickSort ob = new QuickSort () ob.sort (arr, 0, n-1) System.out.println ('lajiteltu taulukko') printArray (arr)}}Tuotos:
Nyt kun olet suorittanut yllä olevan Java-ohjelman, olisit ymmärtänyt, kuinka QuickSort toimii ja miten se voidaan toteuttaa Java-sovelluksessa.Siksi olemme päässeet tämän Quicksort in Java -artikkelin loppuun. Jos haluat oppia lisää,tutustu Edureka, luotettava verkko-oppimisyritys. Edurekan Java J2EE- ja SOA-koulutus- ja sertifiointikurssit on suunniteltu kouluttamaan sekä ydin- että edistyneitä Java-konsepteja sekä erilaisia Java-kehyksiä, kuten Hibernate & Spring.
Onko sinulla kysymys meille? Mainitse se tämän blogin kommenttiosassa ja otamme sinuun yhteyttä mahdollisimman pian.