quicksort java algorithm
Denne veiledningen forklarer Quicksort-algoritmen i Java, dens illustrasjoner, QuickSort-implementering i Java ved hjelp av kodeeksempler:
Quicksort-sorteringsteknikk er mye brukt i programvareapplikasjoner. Quicksort bruker en divide-and-conquer-strategi som merge sort.
beste gratis youtube til mp3-omformer
I kvikksortalgoritmen velges først et spesialelement kalt “pivot”, og den aktuelle matrisen eller listen er delt inn i to delmengder. De partisjonerte delmengdene kan ha eller ikke være like store.
=> Les gjennom Easy Java Training Series.
Skilleveggene er slik at alle elementene mindre enn dreieelementet er mot venstre for dreietappen, og elementene større enn dreietappen er til høyre for dreietappen. Quicksort-rutinen sorterer rekursivt de to underlistene. Quicksort fungerer effektivt og også raskere, selv for større matriser eller lister.
Hva du vil lære:
- Quicksort Partition Java
- Quicksort Algorithm Java
- Pseudokode for rask sortering
- Illustrasjon
- Quicksort-implementering i Java
- ofte stilte spørsmål
- Konklusjon
- Anbefalt lesing
Quicksort Partition Java
Partisjonering er nøkkelprosessen i Quicksort-teknikken. Så hva er partisjonering?
Gitt en matrise A, velger vi en verdi x kalt pivot slik at alle elementene mindre enn x er før x, og alle elementene større enn x er etter x.
En pivotverdi kan være et av følgende:
- Det første elementet i matrisen
- Det siste elementet i matrisen
- Midtelementet i matrisen
- Ethvert tilfeldig element i matrisen
Denne pivotverdien plasseres deretter i riktig posisjon i matrisen ved å partisjonere matrisen. Dermed er utgangen av 'partisjoneringsprosessen' svingverdien i riktig posisjon og elementene mindre enn sving til venstre og elementer større enn en sving til høyre.
Tenk på følgende diagram som forklarer partisjoneringsprosessen.
Diagrammet ovenfor viser prosessen med partisjonering av array ved å velge det siste elementet i arrayen gjentatte ganger som en pivot. Merk at på hvert nivå deler vi matrisen i to underarrayer ved å plassere dreietappen i riktig posisjon.
Deretter viser vi algoritmen og pseudokoden for hurtigsorteringsteknikk som også inkluderer partisjonsrutine.
Quicksort Algorithm Java
Den generelle algoritmen for quicksort er gitt nedenfor.
quicksort(Arr, low, high) begin Declare array Arr[N] to be sorted low = 1st element; high = last element; pivot if(low Nedenfor er pseudokoden for quicksort-teknikken.
Pseudokode for rask sortering
Følgende er pseudokoden for en rask sorteringsteknikk. Vær oppmerksom på at vi har gitt pseudokoden for quicksort og partisjoneringsrutine.
//pseudocode for quick sort main algorithm procedure quickSort(arr[], low, high) arr = list to be sorted low – first element of the array high – last element of array begin if (low Illustrasjon
La oss se illustrasjonen av quicksort-algoritmen. Ta følgende array som et eksempel. Her har vi valgt det siste elementet som pivot.
Som vist er det første elementet merket lavt og det siste elementet er høyt.
Som det fremgår av illustrasjonen ovenfor, er det to pekere, høye og lave som henholdsvis peker mot det siste og første elementet i matrisen. Begge disse pekepinnene flyttes etter hvert som quick-sorten utvikler seg.
Når elementet som pekes av lavpekeren blir større enn pivotelementet og element pekt av høypekeren er mindre enn pivotelementet, bytter vi elementene peket av lav og høy peker, og hver peker går frem med en posisjon.
Ovenstående trinn utføres til begge pekerne krysser hverandre i matrisen. Når de krysser, får svingelementet riktig posisjon i matrisen. På dette punktet er matrisen delt, og nå kan vi sortere hver undergruppe uavhengig ved å bruke rekursivt en rask sorteringsalgoritme til hver av undergruppen.
Quicksort-implementering i Java
QuickSort-teknikken kan implementeres i Java ved hjelp av enten rekursjon eller iterasjon. I denne delen vil vi se begge disse teknikkene.
Rekursivt kviksort
Vi vet at den grunnleggende teknikken til quicksort illustrert ovenfor bruker rekursjon for å sortere matrisen. I den rekursive kviksorten etter partisjonering av matrisen, kalles kviksortsrutinen rekursivt for å sortere underarrayene.
Implementeringen nedenfor viser quicksort-teknikken ved hjelp av rekursjon.
import java.util.*; class QuickSort { //selects last element as pivot, pi using which array is partitioned. int partition(int intArray[], int low, int high) { int pi = intArray[high]; int i = (low-1); // smaller element index for (int j=low; j Produksjon:
Original Array: [4, -1, 6, 8, 0, 5, -3]
Sortert matrise: [-3, -1, 0, 4, 5, 6, 8]
Iterativ kviksort
I iterativ kviksort bruker vi hjelpestakken til å plassere mellomparametere i stedet for å bruke rekursjon og sortere partisjoner.
Følgende Java-program implementerer iterativ kviksort.
import java.util.*; class Main { //partitions the array around pivot=> last element static int partition(int numArray[], int low, int high) { int pivot = numArray[high]; // smaller element index int i = (low - 1); for (int j = low; j <= high - 1; j++) { // check if current element is less than or equal to pivot if (numArray[j] <= pivot) { i++; // swap the elements int temp = numArray[i]; numArray[i] = numArray[j]; numArray[j] = temp; } } // swap numArray[i+1] and numArray[high] (or pivot) int temp = numArray[i + 1]; numArray[i + 1] = numArray[high]; numArray[high] = temp; return i + 1; } //sort the array using quickSort static void quickSort(int numArray[], int low, int high) { //auxillary stack int[] intStack = new int[high - low + 1]; // top of stack initialized to -1 int top = -1; // push initial values of low and high to stack intStack[++top] = low; intStack[++top] = high; // Keep popping from stack while is not empty while (top>= 0) { // Pop h and l high = intStack[top--]; low = intStack[top--]; // Set pivot element at its correct position // in sorted array int pivot = partition(numArray, low, high); // If there are elements on left side of pivot, // then push left side to stack if (pivot - 1 > low) { intStack[++top] = low; intStack[++top] = pivot - 1; } // If there are elements on right side of pivot, // then push right side to stack if (pivot + 1 Produksjon:
Original Array: [3, 2, 6, -1, 9, 1, -6, 10, 5]
Sortert matrise: [- 6, -1, 1, 2, 3, 6, 9, 10, 5]
ofte stilte spørsmål
Sp # 1) Hvordan fungerer et Quicksort?
Svar: Quicksort bruker en splittelse og erobrer strategi. Quicksort partisjonerer først en matrise rundt et valgt pivotelement og genererer underarrayer som er sortert rekursivt.
Spørsmål 2) Hva er tidskompleksiteten til Quicksort?
Svar: Tidskompleksiteten til quicksort i gjennomsnitt er O (nlogn). I verste fall er det O (n ^ 2) det samme som valgsorteringen.
Q # 3) Hvor brukes Quicksort?
Svar: Quicksort brukes mest i rekursive applikasjoner. Quicksort er delen av C-biblioteket. Også nesten programmeringsspråkene som bruker innebygd sortering implementerer quicksort.
Q # 4) Hva er fordelen med Quicksort?
Svar:
- Quicksort er en effektiv algoritme og kan enkelt sortere til og med en enorm liste over elementer.
- Det er på plass sortering og trenger derfor ikke ekstra plass eller minne.
- Det er mye brukt og gir en effektiv måte å sortere datasett av hvilken som helst lengde.
Sp # 5) Hvorfor er Quicksort bedre enn sammenslåingen?
Svar: Hovedårsaken til at quicksort er bedre enn flettesorteringen er at quicksort er en stedssorteringsmetode og ikke krever ekstra minne. Flettesortering krever ekstra minne for mellomsortering.
Konklusjon
Quicksort regnes som den beste sorteringsalgoritmen, hovedsakelig på grunn av effektiviteten til å sortere til og med et stort datasett på O (nlogn) -tid.
Quicksort er også en stedssortering og krever ikke ekstra minne. I denne veiledningen har vi sett den rekursive og iterative implementeringen av quicksort.
I vår kommende opplæring vil vi fortsette med sorteringsmetoder i Java.
=> Ta en titt på Java Beginners Guide her.
Anbefalt lesing
- Binær søkealgoritme i Java - implementering og eksempler
- Java Array - Hvordan skrive ut elementer av en array i Java?
- Valgsortering i Java - Valgsorteringsalgoritme og eksempler
- Array Data Typer - int Array, Double array, Array of Strings Etc.
- Java Array - Erklære, opprette og initialisere en array i Java
- JAVA-opplæring for nybegynnere: 100+ praktiske Java-videoveiledninger
- Java Copy Array: Hvordan kopiere / klone en array i Java
- Java Array Length Tutorial med kodeeksempler