Jeśli przez l oznacza się indeks pierwszego, a przez r – ostatniego elementu sortowanego fragmentu tablicy, zaś przez i – indeks elementu, na którym tablica została podzielona, to procedurę sortowania można (w dużym uproszczeniu) przedstawić następującym pseudokodem: PROCEDURE Quicksort(tablica, l, r) BEGIN IF l < r THEN { jeśli fragment dłuższy niż 1 element } BEGIN i := PodzielTablice(tablica, l, r); { podziel i zapamiętaj punkt podziału } Quicksort(tablica, l, i-1); { posortuj lewą część } Quicksort(tablica, i+1, r); { posortuj prawą część } END END
{wybiera element, który ma być użyty do podziału i przenosi wszystkie elementy mniejsze na lewo od tego elementu, a elementy większe lub równe, na prawo od wybranego elementu } PROCEDURE PodzielTablice(tablica, l, r) BEGIN indeksPodzialu := WybierzPunktPodzialu(l, r); {wybierz element, który posłuży do podziału tablicy} wartoscPodzialu := tablica[indeksPodzialu]; {zapamiętaj wartość elementu} Zamien(tablica, indeksPodzialu, r);