Salve a tutti

Ho questo array di interi da ordinare tramite il quicksort con il vincolo di scegliere come pivot l'ultimo elemento del (sotto)vettore in esame...

3 1 2 5 7 8 4

Io l'ho svolto così:

La prima volta il pivot è il 4
La i scorre verso destra in quando non trova un elemento >=pivot
La j scorre fin quando non trova un elemento <=pivot

i j
3 1 2 5 7 8 4 Condizione iniziale

j i
3 1 2 5 7 8 4 Passo 1

Al primo passo i e j si son scambiati di posto

A questo punto l'algoritmo si deve fermare per lavorare con i sottovettori.
Ma se dividessi in due il vettore avrei il 4 in ultima posizione....questo 4 va prima spostato?
Se si dove e perchè?

Ringrazio quanti potranno essermi d'aiuto.