DECMATRIX

Ferramentas Matemáticas

Bubble Sort
i
Insira até 21 números inteiros de -999 a 999, separados por vírgulas.
5
0
1
-3
8
2
2
3
4
-2
2
5

Passos:

Execute o algoritmo para ver os passos gravados.

Nenhum passo registrado ainda.
LentoRápido

Código

O Bubble Sort é um algoritmo de ordenação simples que funciona repetidamente percorrendo a lista a ser ordenada, comparando cada par de elementos adjacentes e os trocando de posição se estiverem na ordem errada. O processo é repetido até que a lista esteja ordenada. O nome 'Bubble Sort' vem do fato de que os elementos maiores 'borbulham' para o topo da lista a cada iteração.

Complexidade: Na versão clássica, a complexidade de tempo é sempre O(n²) em todos os cenários (pior caso, médio e melhor caso). Como este algoritmo não possui um mecanismo de parada antecipada, mesmo que a lista já venha completamente ordenada (melhor caso), ele executará todas as passagens e comparações de forma 'cega', desperdiçando processamento.

1const bubbleSort = (arr) => {
2    // Laço externo que garante que a varredura aconteça N vezes
3    for (let i = 0; i < arr.length; i++) {
4        // Laço interno ignora os últimos elementos já ordenados
5        for (let j = 0; j < arr.length - i - 1; j++) {
6            // Se o atual for maior que o próximo, troca!
7            if (arr[j] > arr[j + 1]) {
8                let temp = arr[j];
9                arr[j] = arr[j + 1];
10                arr[j + 1] = temp;
11            }
12        }
13    }
14    return arr;
15};

Definição do Bubble Sort

O Bubble Sort é um algoritmo de ordenação simples que funciona repetidamente percorrendo a lista a ser ordenada. Ele compara cada par de elementos adjacentes e os troca de posição se estiverem na ordem errada. O processo é repetido até que a lista inteira esteja ordenada. O nome 'Bubble Sort' vem do fato de que os elementos maiores 'borbulham' para o final da lista a cada iteração.

Como o Bubble Sort Funciona

  1. Comece comparando os dois primeiros elementos da lista.
  2. Se o primeiro elemento for maior que o segundo, troque-os de posição.
  3. Mova para os próximos elementos e repita o processo.
  4. Continue até percorrer toda a lista sem precisar fazer mais trocas.
  5. A lista estará ordenada quando não houver mais trocas a serem feitas.

Aplicações e Uso Real

Apesar de ser um dos algoritmos mais famosos e estudados na programação, o Bubble Sort raramente é implementado em sistemas de produção, softwares reais ou bibliotecas nativas. Sua natureza quadrática O(n²) faz com que ele se torne extremamente lento à medida que a quantidade de dados cresce. Seu principal valor é didático, pois é a ferramenta perfeita para introduzir estudantes aos conceitos de ordenação, iteração de arrays e análise de desempenho, servindo como base essencial para entender algoritmos mais eficientes.

Propriedades do Bubble Sort

  1. Complexidade de tempo: O pior caso e o caso médio do Bubble Sort têm uma complexidade de tempo de O(n²), onde n é o número de elementos na lista. O melhor caso, quando a lista já está ordenada, tem uma complexidade de O(n) devido à necessidade de percorrer a lista para verificar se está ordenada.
  2. Complexidade de espaço: O Bubble Sort é um algoritmo de ordenação in-place, o que significa que ele não requer espaço adicional significativo além do necessário para armazenar a lista original. Portanto, sua complexidade de espaço é O(1).
  3. Estabilidade: O Bubble Sort é um algoritmo de ordenação estável, o que significa que ele mantém a ordem relativa dos elementos iguais. Se dois elementos têm o mesmo valor, eles permanecerão na mesma ordem em que estavam na lista original após a ordenação.

FAQ

01. Por que o Bubble Sort é considerado um algoritmo ineficiente?

02. Qual é a diferença entre o Bubble Sort Clássico e o Otimizado?

03. O Bubble Sort precisa de memória extra para rodar?

04. Quando eu deveria escolher o Bubble Sort em um projeto real?

Decmatrix - Seu toolkit matemático open-source para cálculos, conversões e mais.
Termos de Uso
Política de Privacidade
Contato: decimatrix25@gmail.com