Alguém poderia me explicar esse trecho do Comb sort?

Então galera postei uma pergunta aqui sobre como aplicar o Comb sort… Enfim eu consegui, irei até deixar o código aqui caso alguém tenhas as mesmas duvidas que eu tinha: Fiz um pouco diferente mas consegui. Vou deixar o código caso esteja com a mesma duvida:

[code]import javax.swing.JOptionPane;

public class Sort {
public static void main(String[] args){
int i=0;
String [] preencher= new String [10];
for(i=0;i<10;i++){
preencher[i]=JOptionPane.showInputDialog(“Digite o elemento”);
}

    int gap = preencher.length;    
    boolean swapped = true;    
     
  while (gap > 1 || swapped) {    
        if (gap > 1)    
            gap =(int) (gap / 1.247330950103979);           
        i = 0;    
        swapped = false;    
        while (i + gap < preencher.length) {    
            if (preencher[i].compareTo(preencher[i + gap]) > 0) {    
                String t = preencher[i];    
                preencher[i] = preencher[i + gap];    
                preencher[i + gap] = t;    
                swapped = true;    
            }    
            i++;    
        }    
    }    
  for(i=0;i<10;i++){   
  JOptionPane.showMessageDialog(null,preencher[i]);  
}  
}  
}  

[/code]
Porém eu só não consegui entender direito o que esse trecho faz:

while (i + gap < preencher.length) { if (preencher[i].compareTo(preencher[i + gap]) > 0) { String t = preencher[i]; preencher[i] = preencher[i + gap]; preencher[i + gap] = t; swapped = true; } i++; } } for(i=0;i<10;i++){ JOptionPane.showMessageDialog(null,preencher[i]); } } }
Em síntese o que eu consegui pegar foi: Enquanto i + gap que nesse trecho deve ser 1 for < que o tamanho do vetor preencher, ( nessa parte do if eu travo) !!!
Se alguém pudesse me explicar ficaria grato !!!

Então galera acho que consegui entender mais ou menos o que ele faz: i começa valendo zero então ele entra no while e faz i+gap ( que a essa altura tem que ser um ) e caso i+gap( na primeira volta do while é igual a 1 ) for menor que preencher.length ; ele irá comparar preencher[i] com preencher[i+gap]( que equivale ao próximo elemento da lista) se preencher[i] for maior que preencher[i+gap] (próximo elemento da lista) ele irá trocar os dois de lugar ^^ acho que é isso ! Caso esteja errado por favor me corrijam !