Welcome to the Ranch
Who gave you parallel arrays? That is a potential nightmare. If at all possible, change the arrays so you have one array and set up a Comparator to sort with.
You have been well-taught if you test the sizes of the arrays and throw Exceptions, but you need those tests before you try any sorting. Actually the test for empty arrays is probably unnecessary; if you pass a 0-length array, your outer for loop will look like this:
for (o = 0 - 1; o (== -1) > 1 (ie false); o--) ...
so the loop will never start, and nothing will go wrong.
I would recommend you go through the loop with a pencil and paper and see what the values are for each iteration, like that, when you are passing two elements. Then see whether you have an out-by-one error anywhere. An out-by-one will cause the loop to run once too often, or once too few times.
Also write your loops in the conventional manner
for (int o = myArray.length - 1; o > 1; o--) ...
Declare the loop indices inside the (), not before the loop.
If you can't visualise the numbers inside the loops, add some print statements inside the loops at their start. Then you can see which values of i and o are being used, but if the loop never starts, you will obviously see nothing.