La funzione di partizione è una funzione che prende in un array a [l ... u] come input. Qui, l è il limite inferiore, e u è il limite superiore dell'array. L'algoritmo trova un indice Q in modo tale che tutti gli elementi inferiori a un [q] cadano nel subarray a [l ... q-1], e tutti gli elementi maggiori di un [q] cadono nel subarray a [Q+1 ... u]. La funzione di partizione raggiunge questo usando un elemento per pivot e due puntatori: puntatore I e puntatore J all'array.
Il puntatore J punta al primo elemento nell'array e il puntatore I è inizializzato come J-1. La funzione itera attraverso l'array usando il puntatore j. Per l'elemento A [J], l'elemento può essere maggiore dell'elemento per pivot o inferiore all'elemento pivot. Se l'elemento è maggiore dell'elemento pivot, il puntatore J viene incrementato, indicando l'elemento successivo. Se l'elemento a [j] è inferiore all'elemento pivot, incremiamo il puntatore i, scambia un [i] e un [j]. Lo scambio degli elementi aiuta a mantenere il puntatore I in modo tale che gli elementi fino all'elemento puntato dal puntatore I sono inferiori all'elemento per pivot. Come fase finale, la funzione di partizione scambia l'elemento pivot con l'elemento all'indice I+1, spostando così l'elemento pivot nella posizione corretta nell'array partizionato.
Codice sorgente
partizione def (arr, lb, ub):La complessità del tempo migliore di QuickSort è O (n log n). Nello scenario migliore, in ogni chiamata all'algoritmo, l'algoritmo divide il problema in due sottoproblemi di uguale dimensione. La peggiore complessità del tempo dell'algoritmo QuickSort è O (n^2). Ciò si verifica quando l'elemento di partizione viene sempre scelto come ultimo elemento e l'array è già ordinato.