paint-brush
O que é o algoritmo Bubble Sort para números?por@ishitajuneja
2,003 leituras
2,003 leituras

O que é o algoritmo Bubble Sort para números?

por Ishita Juneja5m2023/06/27
Read on Terminal Reader

Muito longo; Para ler

O algoritmo Bubble Sort é uma técnica de classificação baseada em comparação que compara repetidamente elementos adjacentes e os troca se estiverem na ordem errada. O algoritmo prossegue iterativamente até que toda a lista esteja ordenada. Tem uma complexidade de tempo de O(n^2), onde n representa o número de elementos na lista.
featured image - O que é o algoritmo Bubble Sort para números?
Ishita Juneja HackerNoon profile picture
0-item
1-item
2-item

A classificação é uma operação fundamental na ciência da computação, e vários algoritmos foram desenvolvidos para organizar os elementos em uma ordem específica de forma eficiente.


Um desses algoritmos é o Bubble Sort, uma técnica de classificação simples, mas eficaz.


Neste artigo, vamos nos aprofundar no conceito do algoritmo Bubble Sort para números, explorar seu princípio de funcionamento, analisar sua complexidade de tempo e destacar sua importância em aplicativos de classificação.


Além disso, abordaremos o algoritmo de Kadane , outro algoritmo importante na ciência da computação .


Então, vamos mergulhar nos detalhes.


O Algoritmo Bubble Sort

O algoritmo Bubble Sort é uma técnica de classificação baseada em comparação que compara repetidamente elementos adjacentes e os troca se estiverem na ordem errada.


Seu nome deriva de como os elementos menores "borbulham" no topo da lista, semelhante a bolhas subindo em um líquido.


O algoritmo prossegue iterativamente até que toda a lista esteja ordenada.


Vamos entender as principais etapas envolvidas no algoritmo Bubble Sort:


  • A partir do início da lista, compare cada par de elementos adjacentes.
  • Se os elementos estiverem na ordem errada (por exemplo, o elemento atual é maior que o próximo elemento em ordem crescente), troque-os.
  • Passe para o próximo par de elementos e repita o processo de comparação e troca.
  • Continue esse processo até que não sejam necessárias mais trocas, indicando que a lista está classificada.


Exemplo de algoritmo de classificação de bolhas:


Considere uma lista não ordenada de números: [5, 2, 8, 1, 3]


Primeira iteração:


Compare 5 e 2. Troque-os como 5 > 2. Lista: [2, 5, 8, 1, 3]

Compare 5 e 8. Nenhuma troca é necessária. Lista: [2, 5, 8, 1, 3]

Compare 8 e 1. Troque-os como 8 > 1. Lista: [2, 5, 1, 8, 3]

Compare 8 e 3. Troque-os como 8 > 3. Lista: [2, 5, 1, 3, 8]


Segunda iteração:


Compare 2 e 5. Nenhuma troca é necessária. Lista: [2, 5, 1, 3, 8]

Compare 5 e 1. Troque-os como 5 > 1. Lista: [2, 1, 5, 3, 8]

Compare 5 e 3. Troque-os como 5 > 3. Lista: [2, 1, 3, 5, 8]


Terceira iteração:


Compare 2 e 1. Troque-os como 2 > 1. Lista: [1, 2, 3, 5, 8]

Compare 2 e 3. Nenhuma troca é necessária. Lista: [1, 2, 3, 5, 8]

O processo acima continua até que não sejam necessárias mais trocas. A lista classificada resultante é [1, 2, 3, 5, 8].


Análise de Complexidade de Tempo :


O algoritmo Bubble Sort tem uma complexidade de tempo de O(n^2), onde n representa o número de elementos na lista. Isso ocorre porque, no pior cenário, em que a lista está em ordem decrescente, cada elemento precisa ser comparado e trocado com todos os outros elementos. O algoritmo requer n-1 iterações para n elementos, resultando em complexidade de tempo quadrática.


Vantagens e Desvantagens do Algoritmo Bubble Sort


Vantagens


Simplicidade: A simplicidade do algoritmo Bubble Sort torna-o fácil de entender e implementar. Envolve comparar e trocar elementos adjacentes, tornando-os acessíveis para iniciantes ou para fins educacionais.


Eficiência de espaço: Bubble Sort opera no local, o que significa que não requer memória adicional para executar a operação de classificação. Ele classifica os elementos dentro da própria matriz fornecida, tornando-a eficiente em termos de memória.


Classificação estável: este algoritmo de classificação é um algoritmo de classificação estável, o que significa que mantém a ordem relativa dos elementos com valores iguais. Se dois elementos tiverem o mesmo valor, sua ordem permanecerá inalterada após a classificação.


Adaptabilidade: Pode ser adaptado para lidar com vários cenários. Por exemplo, introduzindo uma versão otimizada chamada " Classificação por bolha sinalizada " ou " Classificação por bolha modificada ", iterações desnecessárias podem ser evitadas quando o array já está classificado.


Desvantagens


Ineficiência para grandes conjuntos de dados: o algoritmo Bubble Sort tem uma complexidade de tempo de O(n^2), tornando-o ineficiente para grandes conjuntos de dados. À medida que o número de elementos aumenta, o número de comparações e trocas cresce exponencialmente, levando a tempos de execução mais longos.


Baixo desempenho: Este algoritmo é conhecido por seu baixo desempenho em comparação com outros algoritmos de classificação, especialmente ao lidar com matrizes grandes ou quase classificadas. Requer várias passagens por toda a matriz, mesmo parcialmente classificada.


Falta de otimização: a natureza do algoritmo limita seu potencial de otimização. Ao contrário de algoritmos de classificação mais eficientes, como Quick Sort ou Merge Sort, o Bubble Sort carece de técnicas como particionamento ou divisão da matriz, resultando em tempos de execução mais lentos.


Uso prático limitado: Devido à sua ineficiência, o Bubble Sort raramente é usado em aplicações práticas em que grandes conjuntos de dados devem ser classificados rapidamente. Outros algoritmos de classificação, como Merge Sort ou Quick Sort, oferecem melhor desempenho e são preferidos em cenários do mundo real.


Algoritmo de Kadane


Ao discutir algoritmos de ordenação, vale a pena mencionar o algoritmo de Kadane, que é usado para resolver o problema do subarranjo máximo.


Esse algoritmo encontra com eficiência o subarray contíguo dentro de um determinado array com a maior soma. Tem uma complexidade de tempo de O(n) e é amplamente utilizado em várias aplicações, incluindo análise de dados e cálculos financeiros.


Algoritmos de Ordenação Alternativos


Classificação rápida : a classificação rápida é um algoritmo de divisão e conquista que particiona o array com base em um elemento pivô escolhido e classifica recursivamente os subarrays em ambos os lados do pivô.


Merge Sort: Merge Sort é outro algoritmo de divisão e conquista que divide a matriz em submatrizes menores, classifica-as individualmente e, em seguida, mescla-as para obter o resultado classificado.


Heap Sort: Heap Sort utiliza uma estrutura de dados de pilha binária para classificar os elementos. Envolve construir um heap a partir do array e extrair repetidamente o elemento máximo para colocá-lo no final do array classificado.


Classificação por inserção: A classificação por inserção funciona inserindo iterativamente cada elemento de uma parte não classificada da matriz em sua posição correta dentro da parte classificada.


Seleção por Seleção : A Seleção por Seleção localiza o elemento mínimo (ou máximo) em cada passagem e o coloca em sua posição correta. Ele seleciona repetidamente o menor elemento e o troca pela posição atual.


Radix Sort: Radix Sort é um algoritmo de classificação não comparativo que classifica os elementos por seus dígitos ou bits individuais. Usando técnicas de contagem ou baseadas em baldes, ele processa os elementos dígito por dígito, do menos significativo ao mais significativo.


Conclusão


O algoritmo Bubble Sort, com sua implementação direta, fornece uma compreensão básica das técnicas de classificação. Ele classifica com eficiência uma determinada lista de números por meio de comparações e trocas repetidas. Embora possa não ser o algoritmo mais eficiente para grandes conjuntos de dados, ele é significativo em cenários de pequena escala ou quase classificados.


Além disso, o artigo abordou o algoritmo de Kadane, que é fundamental para resolver o problema do subarranjo máximo.


Ao explorar diferentes algoritmos de classificação e suas aplicações, os desenvolvedores podem selecionar a abordagem mais adequada com base nos requisitos específicos de seus projetos.