Do funkcji przekazujesz:
int *tablica, int lewy, int prawy
tablica - tablica do posortowania,
lewy - indeks elementu od którego chcesz sortować (jeżeli dasz 0 to będzie sortować od początku, jednakże istnienie tej zmiennej jest istotne w przypadku rekurencji)
prawy -indeks elementu do którego chcesz sortować ,
Jeżeli np. tablica ma 10 elementów o indeksach 0,1,2,...,8,9 i wywołasz funkcję quicksort(t[], 3,7) to posortowane będą elementy od 3 do 7 a tych o indeksach 0,1,2,8,9 funkcja nie ruszy
int v=tablica[(lewy+prawy)/2];
tutaj sobie robisz zmienną v i przypisujesz jej wartość środkowego elementu w tablicy ((lewy+prawy)/2 zwraca część całkowitą liczby, więc (1+4)/2 = 2)
while (tablica[i]<v) i++;
while (tablica[j]>v) j--;
tutaj i jest indeksem lewego elementu, idziesz od lewej szukając pierwszego elementu który będzie miał wartość większą niż v (while wykonuje się dopóki warunek tablice[i[<v jest prawdziwy, jeżeli napotka na element gdzie tablica[i] > v to się przerwie), następnie to samo robisz z j (j idzie od prawej) - szukasz pierwszego elementu który będzie miał wartość mniejszą od v (od środkowego wyrazu tablicy) potem zamieniasz te dwa elementy miejscami itd. (dalej mniemam że już rozumiesz
)