I found that a for-loop with a counter should go only from zero to a certain limit.
for(int i = 0; i < MAX; i++) { .... }
It is so well known that you can expect that whoever sees this will immediately understand what is happening. It also means that any DEVIATION from this form, counting backward or starting with one or stepping on three, makes it difficult to understand, because you need to recognize that it is different, disassemble it and understand. This includes all of your examples.
I would suggest writing it clearly:
for(int i = 0; i < MAX; i++) { indexFromEnd = (MAX - 1) - i; .... }
source share