La funzione quicksort() prende In input tre parametri:
- il vettore
- un indice che punta al primo elemento da considerare
- un indice Che punta all'ultimo elemento da considerare
In questo modo potremo prendere in considerazione porzioni sempre più piccole del vettore.
La funzione controlla prima se nel vettore ci sono almeno due elementi (primo<ultimo) e solo in questo caso richiama la funzione partiziona() di cui abbiamo già parlato facendosi restituire la posizione del perno; quindi richiama se stessa per applicare l'algoritmo del Quicksort alla porzione di sinistra e alla porzione di destra in cui è stato suddiviso il vettore iniziale dalla posizione del perno.
Nota 1 Questo è un esempio di funzione ricorsiva cioè una funzione che richiama se stessa.
Nota 2 non confondere una direttiva con una variabile: una direttiva è rivolta al compilatore per istruirlo di sostituire ad ogni occorrenza di NRO_ELEMENTI il numero 100 e non occupa memoria.
se la condizione primo<ultimo è falsa la funzione esce immediatamente dall'ultimo livello di nesting della ricorsione ponendo così fine al processo. In altre parole la condizione primo<ultimo è fondamentale per evitare un loop infinito dell'algoritmo.