Poderiam , me ajudar com esse código , ele imprime 5 vetores aleatório , porem eu quero que na saída ele mostre a ordenação crescente do mesmo , esse algoritmo mostra os numeros gerados , porem não ordenam eles no final
package bubblesort;
import java.util.Random;
public class BubbleSort {
public static void main(String[] args) {
int i;
long inicio;
long fim;
//double tempo;
int[] vetor = new int[5]; // AQUI é a quantidade de Vetores
int intervaloInicial = 0;
int intervaloFinal = 10; // Numeros a ser gerados , o limite no caso
for (i = 0; i < vetor.length; i++) {
vetor[i] = getRandomNumberRange(intervaloInicial, intervaloFinal);
System.out.println(vetor[i]);
}
//BubbleSort
System.out.println("--BubbleSort--");
inicio = System.currentTimeMillis();
bubbleSort(vetor);
fim = System.currentTimeMillis();
System.out.printf("%.3f ms%n", (fim - inicio) / 5d); // AQUI
}
private static int getRandomNumberRange(int min, int max) {
Random r = new Random();
return r.ints(min, (max + 1)).limit(1).findFirst().getAsInt();
}
public static void bubbleSort(int[] a) {
if (a == null) {
throw new NullPointerException("The array doesn't exist.");
}
for (int i = 0; i < a.length - 1; i++) {
for (int j = 0; j < a.length - i - 1; j++) {
if (a[j] > a[j + 1]) {
int temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
}
}
Você não consegue ‘traduzir’ o pseudocódigo para Java? Lá tem dois para (for), no seu só tem um, lá tem variável auxiliar, não vi nada disso no seu código. Veja com um pouco mais de atenção, que vais conseguir resolver.
Eu não deveria, mas vou ‘mastigar’ para você:
/*
*(1)procedimento BubbleSort(A : tabela, N: inteiro)
(2) para j → 1 até N-1 faça
(3) para i → 1 até N-1 faça
(4) se A[i] > A[i+1] então
(5) aux → A[i];
(6) A[i] → A[i+1];
(7) A[i+1] → aux;
(8) fim-se
(9) fim-para
(10) fim-para
*/
import java.util.Random;
public class BubbleSort {
final int FATOR_ESCALA = 10;
final int DESLOCAMENTO = 1;
int[] vetorDados = new int[FATOR_ESCALA];
private void gerarDados(){
Random random = new Random();
for(short i = 0; i < FATOR_ESCALA; i++){
vetorDados[i] = DESLOCAMENTO + random.nextInt(FATOR_ESCALA);
}
}
private void exibirDados(){
for(short i = 0; i < FATOR_ESCALA; i++){
System.out.print(vetorDados[i] + " ");
}
}
public void ordenador(){
int auxiliar;
int contador = 0;
for(short j = 0; j < FATOR_ESCALA; j++){ //para j → 1 até N-1 faça
for(short i = 0; i < FATOR_ESCALA; i++){ //para i → 1 até N-1 faça
contador += 1; //i + 1
if(contador < (FATOR_ESCALA)){ // verifica se já não atingiu o penúltimo
if(vetorDados[i] > vetorDados[contador]){ //se A[i] > A[i+1] então
auxiliar = vetorDados[i]; //aux → A[i];
vetorDados[i] = vetorDados[contador]; //A[i] → A[i+1];
vetorDados[contador] = auxiliar; //A[i+1] → aux;
}
}
}
contador = 0; //reinicia o contador
}
}
public static void main(String[] args){
BubbleSort ordenacaoBolha = new BubbleSort();
ordenacaoBolha.gerarDados();
ordenacaoBolha.exibirDados();
ordenacaoBolha.ordenador();
System.out.println("\n");
ordenacaoBolha.exibirDados();
}
}