Wyznaczając punkt podziału masz coś typu:
void QuickSort( int tab[], int left, int right )
{
int i = left;
int j = right;
int x = tab[( left + right ) / 2 ];
...
}
skoro left i right są liczbami typu int to całe wyrażenie (left + right ) / 2 zwróci int - co w przypadku dzielenia wiąże się po prostu z ucięciem tego co jest po przecinku - np. (1+8) / 2 = 4 , dlatego zawsze otrzymamy liczbę całkowitą i nie ma żadnego problemu z parzystością / nieparzystością liczby sortowanych zmiennych