Gerar números aleatórios em uma array e coloca los em ordem crescente

6 respostas Resolvido
Andre_Pires1
Pessoal, estou tentando fazer uma questão onde um vetor de 10 posições é preenchido aleatoriamente  e depois é preciso coloca los em ordem  crescente. Segue o código

/*

83) [DESAFIO] Crie uma lógica que preencha um vetor de 20 posições com números

aleatórios (entre 0 e 99) gerados pelo computador. Logo em seguida, mostre os

números gerados e depois coloque o vetor em ordem crescente, mostrando no final

os valores ordenados.

*/

package listaguanabara;

import java.util.Random;

import java.util.Arrays;
/**
 *
 * @author Andre
 */
public class NewClassVetores83 { 
    public static void main(String[] args) {
        Random in = new Random();
        int vet[]= new int[10];
        int i;
          
        for( i=0; i<vet.length;i++){
            System.out.print(in.nextInt(99) + " ");   
        } 
        System.out.println(" "); 
        Arrays.sort(vet);
          System.out.print(vet[i] + " ");                            
    }
}

Depois do laço for tentei coloca lo em ordem usando o Arrays.sort(vet[i])sem sucesso, tentei criar outro laço for para exibir o laço com a Arrays.sort(vet[i]) tambem sem resultado. Alguem poderia me ajudar?

6 Respostas

Fefo80

Faz dois FOR, um dentro do outro, correndo todas as posições do seu vetor.

Se a posição seguinte for menor que a atual, troque elas de lugar.

Não precisa do Arrays.sort().

Faz o teste e posta aqui.

Andre_Pires1

Uma estrutura condicional para fazer as trocas, entendi . Vou tentar fazer , obrigado.

Andre_Pires1

Fiz conforme a sugestão usando 02 laços for e tirei o Arrays.sort mas ele continua sem ordenar. Segue o código …

public class NewClassVetores83 { 
    public static void main(String[] args) {
        Random in = new Random();
        int vet[]= new int[10];
        int i;
        int cont;
        int aux;
        
          
        for(i=0; i<vet.length;i++){
            System.out.print(in.nextInt(99) + " ");   
        } 
        System.out.println(" "); 
        
        for(i=0;i<vet.length;i++){
            for(cont=0; cont<vet.length -1;cont++){
               if(vet[cont]>vet[cont+1]){
                 aux=vet[cont];
                 vet[cont]=vet[cont+1];
                 vet[cont+1]=aux;
               } 
            }
        } 
        for(i=0;i<vet.length;i++){
             System.out.print(vet[i]+ " ");
        }
    }
 }

Estou em dúvidas em relação a variável vet porque há uma variáve in gerando os números aleatórios da array.

Andre_Pires1

Fazendo uma pesquisa vi um método da classe Arrays chamado toString() que que imprime a array; e utilizando o método Arrays.sort() o vetor é ordenado sem precisar usar o bubble sort . Funcionou , porém estou pesquisando o porque de não ter rodado utilizando o bubble sort .
Segue como ficou o código…

public class NewClassVetores83 { 
    public static void main(String[] args) {
        int vet[]= new int[10];
        int i;
        int cont;
        int aux;
        
          
        for(i=0; i<vet.length;i++){
            vet[i]= new Random().nextInt(99);  // Gera números aleatórios 
        } 
        System.out.println(Arrays.toString(vet)); // Imprime o vetor sem laço
        Arrays.sort(vet);  // Ordena o vetor
       System.out.println(Arrays.toString(vet)); // Vetor  em ordem crescente
       
    }
 }
Fefo80
Solucao aceita

Você não errou no bubble sort. Errou aqui!
:sweat_smile:

Você mostrou os valores mas esqueceu de atribuir eles ao vetor!

Troque

Por

vet[i] = in.nextInt(99);
System.out.print(vet[i] + " ");
Andre_Pires1

Verdade!! Obrigado pela orientação @Fefo80 !!! :raised_hands::raised_hands::raised_hands::raised_hands::raised_hands:

Criado 27 de outubro de 2020
Ultima resposta 27 de out. de 2020
Respostas 6
Participantes 2