Passos:
Execute o algoritmo para ver os passos gravados.
Passos:
Execute o algoritmo para ver os passos gravados.
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};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.
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.