Mi duda viene por la utilización de la variable auxiliar, que no consigo ver cuál es realmente su función a la hora de depurar el código.
Olvidate del array y ves a un caso más sencillo:
Tienes:
Para poder intercambiar esos dos valores necesitas una variable auxiliar, tal que así:
int aux;
aux = a;
a = b;
b = a;
De no hacerlo así perderías siempre uno de los dos valores.
En el caso que estás analizando, lo que tienes que hacer es comparar el elemento i con el elemento i+1, si es mayor tienes que intercambiar los dos valores, por eso usas la variable auxiliar. No tiene otra función.
Un saludo