Quick Sort algoritme

Tags:    c++

Er der nogen som kan give mig et praktisk eksempel på en Quick Sort algoritme?

Jeg er klar over at det er en rekursiv sortering, hvilket vil sige at man vælger en pivot indgang, smider alt det som er mindre end pivoten på venstre side, og smider alt det som er større på højresiden. Dernæst sorter man på samme måde. Jeg mangler dog et praktisk eksempel.

5 3 8 1

5 > 3, sandt! så flytter man 5 så der står

3 5 8 1

5 > 8, ikke sandt, så lader man 5-tallet blive hvor den er.

Her kommer jeg i tvivl, hvad gør man så? Fortsætter man med 8-tallet eller starter forfra med 3?? Eller hvordan?






Prøv at følge koden her:
Fold kodeboks ind/udKode 


Du kan ændre størrelse på arrayet i main metoden.

Quicksort sorterer ved at tage alle elementer, som er større end et test tal (pivot) og sætte dem på højre side, og alle tal som er mindre end og sætte dem på venstre side af tallet. Når det er gjort, står pivot tallet korrekt. Så gør man det samme med venstre side (altså de tal som er mindre end pivot tallet), og derefter med højre side. Det bliver man ved med indtil man står med en tom liste.
Min 'if (first < last)' gør, at algoritmen stopper, når den ville have sorteret en tom liste, eller en liste på et element.



Her er en algoritme som er skrevet af Herbert Schildt, en mand som har været med til at sætte ansi/iso standarden for c++...

Synes selv denne stump kode er lidt lettere fordøjelig end Robert Larsens eksempel...

Og det er absolut ingen kritik da jeg sev er meget ny her og til C++ syntes bare lige jeg ville vise hvordan det også kan gøres.

Jeg har tilføjet en smule kode som giver et hjælpe print på skærmen så man kan se hvad der egentlig sker med strengen(char array) løbende.

Fold kodeboks ind/udKode 


Håber det kan bruges... God fornøjelse :)



Indlæg senest redigeret d. 23.08.2008 00:29 af Bruger #14086
t