Funkcja partycji jest funkcją, która przyjmuje tablicę a [l… u] jako dane wejściowe. Tutaj, L jest dolna granica i u jest górną granicą tablicy. Algorytm znajduje indeks Q takie, że wszystkie pierwiastki mniejsze niż [q] spadają w podłodze A [l… q-1] i wszystkie elementy większe niż [q] spadają w podmieniu A [q+1… u]. Funkcja partycji osiąga to za pomocą elementu obrotowego i dwóch wskaźników - wskaźnika I i wskaźnika J do tablicy.
Wskaźnik J wskazuje na pierwszy element w tablicy, a wskaźnik I jest inicjowany jako J-1. Funkcja iteruje tablicę za pomocą wskaźnika j. Dla elementu A [j] element może być większy niż element obrotu lub mniej niż element obrotowy. Jeśli element jest większy niż element obrotu, wskaźnik J zostaje zwiększony, wskazując na następny element. Jeśli element A [j] jest mniejszy niż element obrotu, zwiększamy wskaźnik I, zamień [i] i [j]. Zamiana elementów pomaga utrzymać wskaźnik i tak, że elementy do elementu wskazanego wskaźnikiem i są mniejsze niż element obrotowy. Jako ostatni krok, funkcja partycji zamienia element obrotu z elementem przy indeksie I+1, tym samym przesuwając element obrotu we właściwej pozycji w tablicy partycjonowanej.
Kod źródłowy
def PARTITION (ARR, LB, UB):Najlepsza złożoność czasowa Quicksort to O (n log n). W najlepszym scenariuszu, w każdym wezwaniu do algorytmu, algorytm dzieli problem na dwa podproblety o równej wielkości. Najgorsza złożoność algorytmu Quicksort jest O (N^2). Dzieje się tak, gdy element partycji jest zawsze wybierany jako ostatni element, a tablica jest już sortowana.