QuickSort je algoritam podijeli i osvoji. U paradigmi dizajna algoritma Divide & Conquer, probleme u pod-probleme dijelimo rekurzivno, zatim rješavamo pod-probleme i napokon kombiniramo rješenja kako bismo pronašli konačni rezultat. U ovom ćemo se članku usredotočiti na QuickSort In
U ovom će članku biti obrađeni sljedeći smjerovi,
tablica koja kombinira dva izvora podataka
Započnimo!
Prilikom podjele problema na podprobleme imajte na umu da se struktura podproblema ne mijenja kao izvorni problem.
Algoritam Divide & Conquer ima 3 koraka:
- Podjela: Razbijanje problema na podprobleme
- Osvojiti: Rekurzivno rješavanje potproblema
- Kombiniraj: kombinirajući rješenja da biste dobili konačni rezultat
Postoje razni algoritmi koji se temelje na paradigmi podijeli i osvoji. Brzo sortiranje i spajanje su među njima.
Iako je najgora vremenska složenost QuickSorta O (n2), što je više od mnogih drugih algoritama za sortiranje poput Merge Sort i Heap Sort, QuickSort je u praksi brži, jer se njegova unutarnja petlja može učinkovito implementirati na većinu arhitektura podaci iz stvarnog svijeta.
Razgovarajmo o implementaciji algoritma za brzo sortiranje. Quicksort algoritmi uzimaju zaokretni element i dijele niz oko zaokretnog elementa. Postoji nekoliko varijacija Quicksota što ovisi o načinu na koji odaberete pivot element. Postoji više načina za odabir osovinskog elementa:
ansible vs chef vs puppet
- Odabir prvog elementa
- Odaberite zadnji element
- Odabir slučajnog elementa
- Branje medijana elementa
Sljedeća važna stvar koju treba razumjeti je funkcija particije () u algoritmu brzog sortiranja. Funkcija particije za uzimanje pivot elementa, postavlja ga u desni položaj, pomiče sve elemente manje od pivot elementa ulijevo i sve elemente veće udesno. Quicksort-u treba linearno vrijeme da to učini.
Tada se niz dijeli od dva elementa od pivot elementa u dva dijela (tj. Elementi manji od pivota i elementi veći od pivota) i oba se polja rekurzivno sortiraju pomoću Quicksort algoritma.
Sad kad razumijemo rad algoritma QuickSort. Razumijemo kako implementirati Quicksort algoritam u Javi.
Brzo sortiranje Funkcija:
/ * Quicksort funkcija treba da se niz sortira s najnižim i najvišim indeksom * /
void sort (int arr [], int lowIndex, int highIndex) {// Do lowIndex = highIndex if (lowIndexPogledajmo sada particijski kôd da bismo razumjeli kako to radi.
Pregrada Kodirati
U particijskom kodu odabrat ćemo posljednji element kao stožerni element. Prelazimo čitav niz (tj. Koristeći u našem slučaju varijablu j). Pratimo posljednji najmanji element u nizu (tj. Koristeći varijablu i u našem slučaju). Ako nađemo bilo koji element manji od pivota, trenutni element a [j] premjestimo s arr [i], u suprotnom nastavljamo prelaziti.
int particija (int arr [], int lowIndex, int highIndex) {// Izrada posljednjeg elementa kao stožera int pivot = arr [highIndex] // Korištenje i za praćenje manjih elemenata iz pivot int i = (lowIndex-1) za (int j = lowIndex jSad kad ste razumjeli funkciju Quicksort & partition, brzo ćemo pogledati kompletan kod
Brzo sortiranje Java kod
klasa QuickSort {// Metoda particije int particija (int arr [], int lowIndex, int highIndex) {int pivot = arr [highIndex] int i = (lowIndex-1) za (int j = lowIndex j// Metoda sortiranja
kako dodati java na putsortiranje praznina (int arr [], int lowIndex, int highIndex) {if (lowIndex// Metoda za ispis niza
static void printArray (int arr []) {int n = arr.length for (int i = 0 i// Glavna metoda
public 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 ('sortirani niz') printArray (arr)}}Izlaz:
Nakon izvršavanja gornjeg Java programa shvatili biste kako QuickSort radi i kako ga implementirati u Javi.Tako smo došli do kraja ovog članka o 'Quicksort u Javi'. Ako želite naučiti više,provjerite Edureka, pouzdane tvrtke za internetsko učenje. Edurekin tečaj za obuku i certificiranje Java J2EE i SOA osmišljen je kako bi vas osposobio za osnovne i napredne Java koncepte zajedno s raznim Java okvirima poput Hibernate & Spring.
Imate pitanje za nas? Molimo vas da ga spominjete u odjeljku za komentare ovog bloga i javit ćemo vam se što je prije moguće.