Entendendo o Algorítmo Bubble Sort

Uma forma de trabalhar com o algoritmo Bubble Sorte é comparando os elementos adjacentes (dois a dois), por exemplo: compara-se a primeira posição do vetor com a segunda, na segunda iteração (repetição), compara-se a segunda posição do vetor com a terceira, e assim sucessivamente. De acordo com o algoritmo, podemos ordenar o vetor de forma crescente ou decrescente.

O algoritmo Bubble Sort percorre todo o vetor diversas vezes, por isso, não é recomendado o uso dele para aplicações que requerem velocidade ou trabalhem com uma grande quantidade de dados.

Como tudo funciona

Bubble Sort

Mãos a obra:


    import java.util.ArrayList;
    import java.util.Random;
    import java.util.Scanner;
    
    public class BubbleSort {
    
        public static void main(String[] args) {
            Scanner leia = new Scanner(System.in);
            ArrayList lista = new ArrayList<>();
            int cont = 1;
    
            for (int i = 0; i < 1000; i++) {
                Random rand = new Random();
                int n = rand.nextInt(1000);
                lista.add(n);
            }
    
            bubbleSort(lista);
    
            for (Integer integer : lista) {
                System.out.print(integer + ", ");
                if (cont % 20 == 0) {
                    System.out.println();
                }
                cont++;
            }
        }
    
        /* ---------------------- Algoritimo De Ordenação ---------------------- */
        public static void bubbleSort(ArrayList lista) {
            Integer aux;
            boolean ordeno = false;
    
            while (!ordeno) {
                ordeno = true;
                for (int i = 0; i < lista.size() - 1; i++) {
                    if (lista.get(i) > (lista.get(i + 1))) {
                        aux = lista.get(i);
                        lista.set(i, lista.get(i + 1));
                        lista.set(i + 1, aux);
                        ordeno = false;
                    }
                }
            }
        }
    }    

    
Tempo de execução(em segundos) VS Qtd de nº no Array:
Bubble Sort 1.000 10.000 500.000 1.000.000
Bom 0.000172 0.0077947 0.046261 0.0413429
Médio 0.0130364 1.2210467 6385.8889077 25200
Ruim 0.0302035 0.6685959 1482.5317544 24200

*A tabela representa a quantidade de numros utilizadas e o tempo de execução o processo de ordenação