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

1 resposta
J

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:

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]);  
    }  
    }  
    }
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 !!!

1 Resposta

J

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 !

Criado 13 de setembro de 2012
Ultima resposta 13 de set. de 2012
Respostas 1
Participantes 1