Bubble Algoritmo de classificação com Python usando exemplo de lista
ā” Resumo Inteligente
BubblO comando `e Sort` organiza os itens da lista em ordem crescente, comparando repetidamente valores adjacentes e trocando-os.ping Eles são classificados quando o elemento da esquerda é maior. Essa classificação por comparação direta é adequada para conjuntos de dados pequenos ou quase classificados e ensina a lógica bÔsica de classificação de forma eficaz.
O que Ć© uma Bubble Classificar?
Bubble Classificar é um algoritmo de ordenação usado para ordenar itens de uma lista em ordem crescente, comparando dois valores adjacentes. Se o primeiro valor for maior que o segundo, o primeiro valor ocupa a posição do segundo, e vice-versa. Se o primeiro valor for menor que o segundo, não hÔ troca de posição.ping é feito.
Este processo é repetido até que todos os valores de uma lista tenham sido comparados e trocados, se necessÔrio. Cada iteração é geralmente chamada de passagem. O número de passagens em uma classificação por bolha é igual ao número de elementos em uma lista menos um.
Neste curso Bubble Classificando em Python tutorial VocĆŖ aprenderĆ” qual o problema que ele resolve, sua forma otimizada, um passo a passo visual e um exemplo prĆ”tico. Python programa e suas caracterĆsticas de desempenho.
Implementando o Bubble Algoritmo de classificação
Vamos dividir a implementação em três (3) etapas, a saber, o problema, a solução e o algoritmo que podemos usar para escrever código para qualquer linguagem.
O problema
Uma lista de itens Ć© fornecida em ordem aleatória, e gostarĆamos de organizĆ”-los de forma ordenada.
Considere a seguinte lista:
[21, 6, 9, 33, 3]
A solução
Percorra a lista, comparando dois elementos adjacentes e trocando-os.ping eles se o primeiro valor for maior que o segundo valor.
O resultado deve ser o seguinte:
[3, 6, 9, 21, 33]
Algoritmo
O algoritmo de ordenação por bolha funciona da seguinte maneira:
Passo 1) Obtenha o nĆŗmero total de elementos. Obtenha o nĆŗmero total de itens na lista fornecida.
Passo 2) Determine o nĆŗmero de passagens externas (n ā 1) a serem feitas. Seu comprimento Ć© list menos um.
Passo 3) Para cada passagem externa 1, realize (n ā 1) passagens internas. Obtenha o valor do primeiro elemento e compare-o com o valor do segundo. Se o segundo valor for menor que o primeiro, troque as posiƧƵes.
Passo 4) Repita o passo 3 atĆ© chegar Ć passagem externa (n ā 1). Obtenha o próximo elemento da lista e repita o processo realizado no passo 3 atĆ© que todos os valores estejam em ordem crescente correta.
Passo 5) Retorne o resultado quando todas as iteraƧƵes forem concluĆdas. Retorne os resultados da lista ordenada.
Passo 6) Otimizar algoritmo.
Evite passagens internas desnecessƔrias se a lista ou os valores adjacentes jƔ estiverem classificados. Por exemplo, se a lista fornecida jƔ contƩm elementos que foram classificados em ordem crescente, podemos interromper o loop antecipadamente.
Estratégias Bubble Algoritmo de classificação
Por padrĆ£o, o algoritmo para classificação por bolhas em Python compara todos os itens na lista, independentemente de a lista jĆ” estar ordenada ou nĆ£o. Se a lista fornecida jĆ” estiver ordenada, comparar todos os valores Ć© um desperdĆcio de tempo e recursos.
Otimizar a classificação por bolha nos ajuda a evitar iterações desnecessÔrias e economizar tempo e recursos.
Por exemplo, se o primeiro e o segundo itens jĆ” estiverem classificados, nĆ£o serĆ” necessĆ”rio iterar pelo restante dos valores. A iteração Ć© encerrada e a próxima Ć© iniciada atĆ© que o processo seja concluĆdo conforme mostrado abaixo Bubble Exemplo de classificação.
A otimização é feita seguindo os seguintes passos:
Passo 1) Crie uma variÔvel de sinalização que monitore se houve alguma troca.ping ocorreu no circuito interno.
Passo 2) Se os valores tiverem trocado de posição, continue para a próxima iteração.
Passo 3) Se os valores não tiverem trocado de posição, encerre o laço interno e continue com o laço externo.
Uma classificação por bolha otimizada é mais eficiente, pois executa apenas as etapas necessÔrias e ignora aquelas que não são obrigatórias.
Representação visual
Dada uma lista de cinco elementos, as imagens a seguir ilustram como o algoritmo de ordenação por bolha itera pelos valores ao ordenÔ-los.
A imagem a seguir mostra a lista não ordenada:
Primeira iteração
Passo 1)
Os valores 21 e 6 são comparados para verificar qual é maior que o outro.
21 é maior que 6, portanto 21 ocupa a posição que era ocupada por 6, enquanto 6 ocupa a posição que era ocupada por 21.
Nossa lista modificada agora se parece com a acima.
Passo 2)
Os valores 21 e 9 são comparados.
21 é maior que 9, então trocamos as posições de 21 e 9.
A nova lista agora Ć© como a acima.
Passo 3)
Os valores 21 e 33 são comparados para encontrar o maior.
O valor 33 é maior que 21, portanto não hÔ troca.ping ocorre.
Passo 4)
Os valores 33 e 3 são comparados para encontrar o maior.
O valor 33 é maior que 3, então trocamos suas posições.
A lista ordenada ao final da primeira iteração é semelhante à mostrada acima.
Segunda iteração
A nova lista após a segunda iteração é a seguinte:
Terceira Iteração
A nova lista após a terceira iteração é a seguinte:
Quarta Iteração
A nova lista após a quarta iteração é a seguinte:
Python Exemplos
O código a seguir mostra como implementar o Bubble Algoritmo de classificação em Python.
def bubbleSort(theSeq): n = len(theSeq) for i in range(n - 1): flag = 0 for j in range(n - 1): if theSeq[j] > theSeq[j + 1]: tmp = theSeq[j] theSeq[j] = theSeq[j + 1] theSeq[j + 1] = tmp flag = 1 if flag == 0: break return theSeq el = [21, 6, 9, 33, 3] result = bubbleSort(el) print(result)
Executando o programa de classificação de bolhas acima em Python produz os seguintes resultados:
[3, 6, 9, 21, 33]
Code Explicação
A explicação para o Python BubblO código do programa de classificação é o seguinte:
AQUI,
- Define uma função bubbleSort que aceita um parâmetro theSeq. O código não produz nada.
- ObtĆ©m o comprimento do array e atribui o valor a uma variĆ”vel n. O código nĆ£o produz nenhuma saĆda.
- Inicia um laƧo `for` que executa o algoritmo de ordenação por bolha (n ā 1) vezes. Este Ć© o laƧo externo. O código nĆ£o gera nenhuma saĆda.
- Define uma variĆ”vel de sinalização que serĆ” usada para determinar se uma troca ocorreu ou nĆ£o. Isso serve para fins de otimização. O código nĆ£o gera nenhuma saĆda.
- Inicia o loop interno que compara todos os valores da lista, do primeiro ao último. O código não produz nada.
- Usa a instrução if para verificar se o valor do lado esquerdo é maior que aquele do lado direito imediato. O código não produz nada.
- Atribui o valor de theSeq[j] a uma variĆ”vel temporal tmp se a condição for avaliada como verdadeira. O código nĆ£o produz nenhuma saĆda.
- O valor de theSeq[j + 1] Ć© atribuĆdo Ć posição de theSeq[j]. O código nĆ£o produz nenhuma saĆda.
- O valor da variĆ”vel tmp Ć© atribuĆdo Ć posição theSeq[j + 1]. O código nĆ£o produz nenhuma saĆda.
- A variĆ”vel de sinalização recebe o valor 1 para indicar que ocorreu uma troca. O código nĆ£o gera nenhuma saĆda.
- Utiliza uma instrução if para verificar se o valor da variĆ”vel flag Ć© 0. O código nĆ£o produz nenhuma saĆda.
- Se o valor for 0, chamamos a instrução break que sai do loop interno.
- Retorna o valor de theSeq depois de classificado. O código gera a lista classificada.
- Define uma variÔvel el que contém uma lista de números aleatórios. O código não produz nada.
- Atribui o valor da função bubbleSort a uma variÔvel result.
- Imprime o valor da variƔvel resultado.
Bubble classificar vantagens
A seguir, apresentamos algumas das vantagens do algoritmo de ordenação por bolha:
- à fÔcil de entender.
- Funciona muito bem quando a lista jĆ” estĆ” ordenada ou quase ordenada.
- Não requer memória extensa.
- à fÔcil escrever o código para o algoritmo.
- Os requisitos de espaƧo sĆ£o mĆnimos em comparação com outros algoritmos de classificação.
Bubble classificar Desvantagens
A seguir, apresentamos algumas das desvantagens do algoritmo de ordenação por bolha:
- NĆ£o funciona bem ao classificar listas grandes. Leva muito tempo e recursos.
- à usado principalmente para fins acadêmicos e não para aplicações no mundo real.
- O número de passos necessÔrios para ordenar a lista é da ordem n2.
AnƔlise de complexidade de Bubble Classificar
Existem trĆŖs tipos de complexidade:
1) Classificar complexidade
A complexidade de ordenação Ć© usada para expressar a quantidade de tempo de execução e espaƧo necessĆ”rios para ordenar a lista. O algoritmo de ordenação por bolha realiza (n ā 1) iteraƧƵes para ordenar a lista, onde n Ć© o nĆŗmero total de elementos na lista.
2) Complexidade de tempo
A complexidade de tempo da classificação por bolha é O(n2).
As complexidades de tempo podem ser categorizadas como:
- Pior caso ā Ć© aqui que a lista fornecida estĆ” em ordem decrescente. O algoritmo executa o nĆŗmero mĆ”ximo de execuƧƵes que Ć© expresso como [Big-O] O(n2).
- Melhor caso ā isso ocorre quando a lista fornecida jĆ” estĆ” ordenada. O algoritmo realiza o nĆŗmero mĆnimo de execuƧƵes que Ć© expresso como [Big-Omega] Ī©(n).
- Caso mĆ©dio ā isso ocorre quando a lista estĆ” em ordem aleatória. A complexidade mĆ©dia Ć© representada como [Big-theta] ā(n2).
3) Complexidade espacial
A complexidade espacial mede a quantidade de espaço extra necessÔria para ordenar a lista. O algoritmo de ordenação por bolha requer apenas um (1) espaço extra para a variÔvel temporal usada na operação de troca.ping valores. Portanto, tem uma complexidade de espaço de O(1).

















