Ordenação com BubbleSort

2 respostas
M

pessoal, tenho o seguinte exercício pra resolver:

Faça um teste de execução do método de ordenação bolha para: V={30, 40, 50, 20, 10}
Quantas operações críticas (comparações + trocas) foram necessárias?
Quantas varreduras são necessárias para detectar que o vetor está classificado?
Informe a complexidade do algoritmo BubbleSort nos casos: melhor, pior e caso médio

para isso criei o seguinte código, com as funções bubblesort e troca que a prof. da facul nos forneceu, mas tá dando erro e não to sabendo o que é, se tiver como alguém me explicar o que tá dando problema.. segue o código:

public class Exercicio1 {
    
    public static void main (String [] args){
        int v [] = new int [] {30, 40, 50, 20, 10};
        bubbleSort(v);
    }
    
    public static void bubbleSort  (int[] v) {
	int cont = 0, var = 0; //cont para contar as comparações e var para contar as varreduras
        for (int  i = 0; i < v.length - 1; i++){
            for (int j = 0; i < v.length - (1 - i); j++){
                if (v[j] > v[j+1]){
                    troca(v, j, j+1);
                    cont ++;
                }
                cont ++;
                var ++;
            }
        }
        System.out.println("Operações críticas: " + cont);
        System.out.println("Varreduras: " + var);
    }

    public static void troca (int [] v, int i, int j) {
	int  temp = v[i];
	v[i] = v[j];
	v[j] = temp;
    }
}

2 Respostas

alanrodrigues

Pelo que to vendo…
na linha

if (v[j] > v[j+1])

O seu array tem 5 posições…
quando o j = 5, vc está tentando comparar com a posicao 6 do array [j+1]

Vinicius_Zibetti_Res

v.length = 5;

Para int i = 4;

int auxiliar = v.length - (1 - i);

int j < v[auxiliar]; // erro

auxiliar = 5 - (1 - 4) = 5 - (-3), na multiplicação - com - é +, logo: 5 - (-3) = 8;

Só te digo isto, e espero ter ajudado.

Criado 2 de março de 2012
Ultima resposta 5 de mar. de 2012
Respostas 2
Participantes 3