Bubble Sort

Este algoritmo de ordenação compara cada elemento de uma dada posição com o elemento da posição seguinte, a fim de, ao final da primeira iteração, o último elemento do vetor ser o maior elemento do conjunto. Ao final da segunda iteração, o penúltimo elemento do vetor será o segundo maior elemento do conjunto e assim sucessivamente, até que o primeiro elemento do vetor seja o menor. Este comportamento assemelha-se ao das bolhas, o que dá nome ao algoritmo.

import java.io.*;
import java.util.*;

class Main {
    public static void main(String[] args) throws NumberFormatException, IOException {
       Main processando = new Main();
       processando.processa();
     
       System.exit(0);
    }
   
    static int leitor(BufferedReader br) throws NumberFormatException, IOException {
       int n;
       int resp = 0;
       int sinal = 1;
       while (true) {
           n = br.read();
           if (n >= '0' && n <= '9') break;
           if (n == '-') sinal = -1;
           if (n == '+') sinal = 1;
       }
       while (true) {
           resp = resp*10 + n-'0';
           n = br.read();
           if (n < '0' || n > '9') break;
       }

       return resp*sinal;
    }
   
    void processa() throws NumberFormatException, IOException {
       BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
     
       int qteElementos = leitor(br);

       int[] vetor = new int[qteElementos];
       for (int i = 0; i < qteElementos; i++) {
           vetor[i] = leitor(br);
       }
     
       int contador = 0;
       for (int i = 0; i < qteElementos-1; i++) { //0-3
           for (int j = 0; j < qteElementos-1; j++) { //0-3
               if (vetor[j] > vetor[j+1]) {
                   int tmp = vetor[j+1];
                   vetor[j+1] = vetor[j];
                   vetor[j] = tmp;
                   contador++;
               }
           }
           if (contador == 0) {
               break;
           }
       }
             
       for (int i = 0; i < qteElementos; i++) {
           System.out.print(vetor[i] + " ");
       }
       System.out.println();

       return;
    }
}

Comments

Popular posts from this blog

(Coderbyte) Dash Insert II - Solução

(Coderbyte) Run Length - Solução

(Coderbyte) Counting Minutes I - Solução