Por favor, me ajudem com esse código

3 respostas
C

Ola pessoal, estou tendo problemas com esse código de um algoritmo de classificação.Ele compila, mas para no meio da execução.

import java.util.Random;

public class ClassificBolha

{

static int[] vet = new int[10];

static Random random = new Random();
public static void main(String args[])
{
    preencheVet();
    for(int i = 0; i < vet.length; i++)
    {
        System.out.printf("| %d |",vet[i]);
    }
    System.out.println();
    bolha();
    System.out.println();
    for(int i = 0; i < vet.length; i++)
    {
        System.out.printf("| %d |",vet[i]);
    }
    
}
public static void preencheVet()
{
    for(int i = 0; i < vet.length; i++)
    {
        vet[i] = random.nextInt(100);
    }
}

public static void bolha()
{
    int aux;
    boolean houveMudanca = true;
    while(houveMudanca)
    {
        for( int i = 0; i < vet.length - 1; i++ )
        {
            if(vet[i] > vet[i+1])
            {
                aux = vet[i];
                vet[i] = vet[i+1];
                vet[i+1] = aux;
                houveMudanca = true;
            }
        }
    }
}

public static int[] getVet()
{
    return vet;
}

}

//obrigado. :roll:

3 Respostas

F

public static void bolha() { int aux; boolean houveMudanca = true; while (houveMudanca) { for (int i = 0; i < vet.length - 1; i++) { if (vet[i] > vet[i + 1]) { aux = vet[i]; vet[i] = vet[i + 1]; vet[i + 1] = aux; houveMudanca = true; } } } }

Teu problema esta nesse método… mais especificamente dentro o while… o problema é que tu nunca seta o atributo houveMudanca para false para sair do while… então ele fica em loop infinito…

Coloca uma condição para que houveMudanca seja FALSE…

Abraços!

J

A condição que o felipelo falou, seria mais ou menos assim:

public static void bolha(){ int aux; while (houveMudanca){ boolean houveMudanca = false; for (int i = 0; i < vet.length - 1; i++){ if (vet[i] > vet[i + 1]){ aux = vet[i]; vet[i] = vet[i + 1]; vet[i + 1] = aux; houveMudanca = true; } } } }

C

:grin: blz!valeu!

Criado 18 de janeiro de 2007
Ultima resposta 3 de fev. de 2007
Respostas 3
Participantes 3