Duvida com bubbleSort

Galera sou novo no forum e na tecnologia Java, programo em [size=18]C[/size] e estou com uma duvida na nova plataforma!

Fiz um BubbleSort mas na hora de mandar imprimir na tela a lista ordenada to meio perdido sobre como fazer tal chamada.

Vejam o código

[code]import javax.swing.JOptionPane;

public class Bubble {

­public static void main(String [] args) {

int i, cont, aux;
int num[] = new int[30];
String s = JOptionPane.showInputDialog(“Quantidade inicial de numeros a serem” +
“ordenados\n Obs: Max 30”);
cont = Integer.parseInt(s);
for(i = 0;i < cont;i++){
String a = JOptionPane.showInputDialog(“Digite os numeros”);
num[i] = Integer.parseInt(a);
while(num[i]>num[i+1]){
aux = num[i];
num[i] = num[i+1];
num[i+1] = aux;
}
}

    JOptionPane.showMessageDialog(null,
            "Numeros ordenados em ordem crescente \n" + ????);
    
}

}[/code]

Que variavel eu devo mandar imprimir no showMessageDialog?? Porque se imprimir num[i] ele imprimir o ultimo numero digitado e se imprimir o num[i+1] ele imprime “0” pois pega o fim do vetor que é null, e se mando imprimir num imprime lixo da memoria. Engraçado é que construi a função na raça e no gran finale me perdi =p

Espero ajuda!!!

Olá,

A sua dúvida não é com BubbleSort.


Você tem um Array (vetor) de inteiros armazenado na variavel num e precisa mandar imprimi-lo um por um. Para isso você deve utilizar uma Estrutura de Controle de Repetição.

Utilize uma das duas, e caso tenha dúvidas fique a vontade.

for convencional.

System.out.println("Numeros Ordenados");
for (int i = 0; i < num.length; i++){
    System.out.print(num[i] + " " );
}
System.out.println("Fim dos numeros Ordenados");

enhanced for

System.out.println("Numeros Ordenados");
for ( int x : num ){
    System.out.print(x + " ");
}
System.out.println("Fim dos numeros Ordenados");

Ok?

Opa =p Valeu a ajuda… Mas ainda não ta funcionando =/

Vejam como ficou o trecho final do código

        [code]while(num[i] > num[i+1]){
            aux = num[i];
            num[i] = num[i+1];
            num[i+1] = aux;
        }        
    }
    for(i = 0; i<num.length; i++){
        JOptionPane.showMessageDialog(null,
                "Numeros ordenados em ordem crescente \n"+ num[i] + " ");
    }
}

}
[/code]

Eu entendi o principio da estrutura que foi citada acima, me corrijam se estiver errado!

// depois de ordenado o array, “i” percorre o vetor ate achar o seu fim e vai imprimindo os numeros na posição corrente num[i], portanto realmente era pra imprimir os numeros ordenados um por um!

Voltanto… :smiley:

O problema é que ta imprimindo uma sequencia de “0” e depois o ultimo numero que foi digitado.

Digamos que queiras ordenar 5 numeros, ele vai imprimir sequencialmente 4 zeros e o ultimo numero que foi digitado!

Se alguem puder ajudar fico grato!!!

Ninguem se candidata?

como o amigo ali em cima deichou livre pra perguntar se nao entendece… :smiley:
Estou procurando pelo forum algo sobre enhanced-for e acabei achando este topico. O que exatamente o enhanced for faz? Eu tenho o seguinte codigo:

int[] teste = new int[10];
  for(int x: teste)
            System.out.println(x);

E ele mostra todo o conteudo da array que eu tenho. Ate ai blz. Agora, eu estou intrigado ja que em nenhum lugar eu havia mandado acrescentar um valor no x para ele ir para o proximo indice da array.
Alguem tem ideia de como o enhanced-for funciona? Como que ele passa para o proximo indice?
E tem outra, ele mostra toda a array, indice por indice mas sempre o ultimo numero é 0. Por que isso?

[quote=DaniloM]como o amigo ali em cima deichou livre pra perguntar se nao entendece… :smiley:
Estou procurando pelo forum algo sobre enhanced-for e acabei achando este topico. O que exatamente o enhanced for faz? Eu tenho o seguinte codigo:

int[] teste = new int[10];
  for(int x: teste)
            System.out.println(x);

E ele mostra todo o conteudo da array que eu tenho. Ate ai blz. Agora, eu estou intrigado ja que em nenhum lugar eu havia mandado acrescentar um valor no x para ele ir para o proximo indice da array.
Alguem tem ideia de como o enhanced-for funciona? Como que ele passa para o proximo indice?
E tem outra, ele mostra toda a array, indice por indice mas sempre o ultimo numero é 0. Por que isso?[/quote]

Danilo, esse tópico é um pouco antigo concorda?
Sua dúvida é sobre o for each não tem nada haver com o tópico.

Quanto a sua dúvida, o for each é um sintaxe mais enxuta que vc pode usar para iterar por um array ou coleção.
Ele faz automaticamente a atribuição do valor contido em um indice na variável que foi declarada na primeira parte da estrutura.

Seu exemplo é análogo a

int[] teste = new int[10]; for(int i = 0; i < teste.length; i++) System.out.println(teste[i]);

Percebeu a facilidade? Se vc precisa saber o índice para fazer algo, é legal usar o for normal.
Se vc precisa simplesmente iterar por uma estrutura de dados do início ao fim, vc usa o for each.

Quanto aos zeros, note que vc construiu seu array, mas os elementos dele não foram inicializados por vc.
Por padrão, quando vc cria um array de int, cada elemento do array é inicializado com zero.
As regras de inicialização dos elementos dos arrays são as mesmas para a inicialização de campos de instância de uma classe.

primitivos:
valores integrais são inicializados com 0 (byte, short, int e long)
ponto flutuante com 0.0 (float e double)
boolean com false
char com \u0000

referências:
null - Por exemplo, String[] s = new String[10], s vai ter 10 posicções inicializadas com null.

Fica a dica então, não ressuscite tópicos ainda mais se o assunto tratado não foi correlato.

[]´s