Merge Sort implementation in Java
Mostly LGTM, with the following objections.


Names. Avoid which require a comment to be understood. I'd have no problem with int ax; because it clearly conveys the goal of being an index of a.
Conditionals.
You can statically prove that i &gt; a.length is not possible. If by any chance it happens, it means that something really weird is going on. A good cause to raise an exception. Bottomline is, separate a == test from &gt; one.
Once one of the ranges is exhausted, there's no need to test it again and again. Normally one would break a main loop and copy the remaining data separately


along the lines of:

while (A has data) and (B has data)
    calculate what to copy
    copy it to C

while (A has data)
    copy A to C

while (B has data)
    copy B to C



Types. The methods cry to be generic. If you didn't cover generics yet, disregard the objection.