Mostly because it won't compile.
for(int k = lo; k <= hi; k++) {
if(i > mid)
else if(j > hi)
else if(less(aux[j], aux[i]))
else
}
None of your conditional code contains any executable lines after the condition: That won't compile at all.
You have this:
if (condition)
else if (other condition)
else
And you need this:
if (condition)
something to do when it is true
else if (other condition)
something to do when it is true
else
something to do when neither was true