insertionSort

Alguem pode me ajuda a descobrir como esse codigo consegue ondenar a lista ?
eu ja olhei e re-olhei e parece que nao vai ordenar, mais ordena …

int[] lista = {8,9,5,2,6,3,7,1};

    int var;
    int a;
    
    for(int i=1; i < lista.length; i++){ 
        var  = lista[i];

        for(a=i; a > 0 && lista[a-1] > var; a--){
              lista[a] = lista[a-1];
           }
          
       lista[a] = var;
    }
  
        for(int i=0; i< lista.length; i++){
             System.out.println(lista[i]);
         }

Entediii, eu nao tinha pensando que “a” ao passar pelo segundo “for” diminuia menos -1 mesmo executando apenas uma vez, agora entedi como funciona!