Video: Week 4 2025
Her finner du ut hvordan en av de mest brukte sorteringsteknikkene i Java faktisk fungerer. Denne teknikken kalles Quicksort, , og det er en veldig genial bruk av rekursjon.
For de fleste av oss, finne ut hvordan sorteringsalgoritmer som Quicksort-arbeid bare er en intellektuell øvelse. Java API-en har allerede innebygd sortering.
Quicksort-teknikken sorterer en rekke verdier ved å bruke rekursjon. Dens grunnleggende trinn er således:
-
Velg en vilkårlig verdi som ligger innenfor rekkevidden av verdier i gruppen.
Denne verdien er pivotpunktet . Den vanligste måten å velge pivotpunktet på er å velge den første verdien i matrisen. Folk har skrevet doktorgrad på mer sofistikerte måter å velge et pivotpunkt som resulterer i raskere sortering. Hold deg til med det første elementet i matrisen.
-
Omarrangere verdiene i arrayet slik at alle verdiene som er mindre enn svingpunktet er på venstre side av arrayet og alle verdiene som er større enn eller lik vridpunktet, er på høyre side av array.
Pivotverdien angir grensen mellom venstre og høyre side av arrayet. Det vil nok ikke være døds sentrum, men det spiller ingen rolle. Dette trinnet kalles partisjonering, og venstre og høyre side av arrays er partisjoner. Behandle hver av de to delene av arrayet som et separat array, og start over med trinn 1 for den delen.
-
Det er den rekursive delen av algoritmen.
38 17 58 22 69 31 88 28 86 12
Her er pivotpunktet 38, og oppgave av partisjoneringstrinnet er å omorganisere arrayen til noe slikt: < 17 12 22 28 31 38 88 69 86 58
Legg merke til at verdiene fortsatt ikke er i orden. Arrayet er imidlertid delt mellom verdien 38: Alle verdier som er mindre enn 38 er til venstre for 38, og alle verdier som er større enn 38 er til høyre for 38.
Nå kan du dele opp array inn i to partisjoner til verdien 38 og gjenta prosessen for hver side. Pivotverdien i seg selv går med venstre partisjon, så venstre partisjon er dette:
17 12 22 28 31 38
Denne partisjonen tar partisjonstrinnet 17 som svingpunkt og omorganiserer elementene som følger: > 12 17 22 28 31 38
Som du kan se, er denne delen av arrayet sortert nå.Dessverre innser Quicksort ikke at på dette tidspunktet, så tar det noen få rekursjoner for å være sikker. Men det er den grunnleggende prosessen.
