Ajuda com bubblesort

7 respostas
jessica_cachichi
eu to fazendo um exercicio aqui usando bubblesort ele tem que ordenar os numeros mostar o maior o menor e depois mostrar em ordem decrescente essa psre aqui eu sei que ta errada
for(int k=0;k<v.length-1;k--){
            System.out.print(v[k]-1);
esse eh o codigo
public class BUbbleSort {

    public static void main(String[] args) {
        int maior = 0,menor=0;
        int []v={0,3,6,1,4,2,7,9,8,5};
        for(int i=0;i<v.length;i++){
        if (v[i]>maior)
            maior=v[i];
             }
        for(int j=0;j<v.length;j++){
         if (v[j]<menor)
            maior=v[j];
        }
        for(int i=0;i<v.length-1;i++){
        for(int j=0;j<v.length-1-i;j++){
        if(v[j]>v[j+1]){
            int aux = v[j];
            v[j]=v[j+1];
            v[j+1]=aux;
         
        }
    }

}
        for(int k=0;k<v.length;k++){
            System.out.print(v[k]);
        }
        
        System.out.println(" o maior valor eh" + maior);
        System.out.println(" o menor valor eh" + menor);
        

        for(int k=0;k<v.length-1;k--){
            System.out.print(v[k]-1);
        }
    }
    
     }
grata

7 Respostas

W
for(int k=v.length; k > 0;k--){
	System.out.print(v[k-1]);
}

O problema esta no for que vc falou mesmo, tentar mudar pra esse jeito que eu coloquei.

//Daniel

Zeed01

Boa tarde Colegas !

A sua dúvida é na logica ou na linguagem ?

Acho que você não deveria passar pelo vetor uma vez verificando qual é o maior e e outra qual é o menor e sim ordenando os números… dai no final na primeira posição você teria o menor e na ultima o maior, e poderia imprimir de traz para frente…

[]s.

G

tenta assim

public class BUbbleSort {


	public static void main(String[] args) {
		// TODO Auto-generated method stub


        int maior = 0,menor=0;
        int []v={0,3,6,1,4,2,7,9,8,5};
        for(int i=0;i<v.length;i++){
        if (v[i]>maior)
            maior=v[i];
             }
        for(int j=0;j<v.length;j++){
         if (v[j]<menor)
            maior=v[j];
        }
        for(int i=0;i<v.length-1;i++){
        for(int j=0;j<v.length-1-i;j++){
        if(v[j]>v[j+1]){
            int aux = v[j];
            v[j]=v[j+1];
            v[j+1]=aux;
         
        }
    }

}
        for(int k=0;k<v.length;k++){
            System.out.print(v[k]);
        }
        
        System.out.println(" o maior valor eh " + maior);
        System.out.println(" o menor valor eh " + menor);
        
 
        for(int k=v.length-1;k>=0;k--){
            System.out.print(v[k]);
        }
    }
    
     }

eh soh mudar a parte

for(int k=v.length; k > 0;k--){
	System.out.print(v[k-1]);
}

por essa aki que vai dar certo, vai imprimir em tela em ordem decrescente

for(int k=v.length-1;k>=0;k--){
            System.out.print(v[k]);
        }

espero ter ajudado linda

vlws

Luiz_Aguiar

Por favor coloque um título no tópico que tem ligação direta com sua dúvida!

Obrigado!

jessica_cachichi

Zeed01:
Boa tarde Colegas !

A sua dúvida é na logica ou na linguagem ?

Acho que você não deveria passar pelo vetor uma vez verificando qual é o maior e e outra qual é o menor e sim ordenando os números… dai no final na primeira posição você teria o menor e na ultima o maior, e poderia imprimir de traz para frente…

[]s.

sim isso eh verdade mais o problema que nÃo faz muito tempo que to aprendendo isso, faz uns 3 meses e na facu to aprendendo as coisa muito rapido as vezes nao consigo assimila ai eu mesma tenho que correr a traz.Vou tentar mesmo fazer como vc ta falando eh mais facil.GRta.MUito obrigada pela ajuda e pelo toque, eh sempre bom ouvirmos as pessoas mais experiente.grata.

ViniGodoy

Só uma dica. Você não precisa guardar uma variável para o maior e o menor números.

Como você está ordenando o vetor, com certeza o menor número será o de índice 0, e o maior o de índice tamanho-1. Ou ao contrário, se você ordenar o vetor de maneira decrescente direto.

Teste você mesmo:
public class Teste {
    public static void main(String[] args) {
        int vetor[] = {9,7,8,5,6,3,4,1,2,0};
        
        for (int i = 0; i < vetor.length-1; i++)
            for (int j = i+1; j < vetor.length; j++) 
                if (vetor[i] < vetor[j]) { //Ordem descrescente
                    int aux = vetor[i];
                    vetor[i] = vetor[j];
                    vetor[j] = aux;
                }
        
        System.out.print("Números em ordem: ");
        for (int num : vetor)
            System.out.print(num + " ");
        System.out.println();
        
        System.out.println("Maior: " + vetor[0]);
        System.out.println("Menor: " + vetor[vetor.length-1]);
    }
}
pimenta

Se puder usar um List vai te facilitar muito.

Tem os métodos sort, pra ordenar, max pro maior valor e min pro menor valor…

Dá uma olhada e vê se te ajuda.

Abraços,

Criado 26 de maio de 2008
Ultima resposta 26 de mai. de 2008
Respostas 7
Participantes 7