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

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?

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.

1 curtida

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

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.

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
       
    }
 }

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] + " ");
1 curtida

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