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.

  • šŸ” Mecanismo Central: BubblO algoritmo e sort compara cada par de elementos adjacentes e os troca de lugar, movendo o maior valor nĆ£o ordenado para sua posição final após cada iteração.
  • āš™ļø Variante otimizada: Uma variĆ”vel de sinalização detecta quando uma passagem nĆ£o realiza trocas, interrompendo o loop antecipadamente para que uma lista jĆ” ordenada seja finalizada em uma Ćŗnica varredura.
  • šŸ Python Implementação: Dois laƧos aninhados, alĆ©m de uma variĆ”vel temporĆ”ria, ordenam a lista, e o passo a passo mapeia cada linha para seu comportamento exato.
  • šŸ“Š Perfil de complexidade: A complexidade de tempo Ć© O(n²) nos piores e mĆ©dios casos, Ī©(n) no melhor caso, com um requisito de espaƧo constante de O(1).
  • šŸŽÆ Melhor ajuste: BubblO algoritmo esort se destaca no ensino e em listas quase ordenadas, mas apresenta desempenho ruim em grandes conjuntos de dados em comparação com algoritmos avanƧados.

Bubble Algoritmo de classificação

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:

Bubble Classificar lista não ordenada

Primeira iteração

Passo 1)

Bubble Classificar comparando 21 e 6

Os valores 21 e 6 são comparados para verificar qual é maior que o outro.

Bubble Classificar trocaping 21 e 6

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.

Bubble Classificar lista modificada após troca

Nossa lista modificada agora se parece com a acima.

Passo 2)

Bubble Classificar comparando 21 e 9

Os valores 21 e 9 são comparados.

Bubble Classificar trocaping 21 e 9

21 é maior que 9, então trocamos as posições de 21 e 9.

Bubble Classificar nova lista após troca

A nova lista agora Ć© como a acima.

Passo 3)

Bubble Classificar comparando 21 e 33

Os valores 21 e 33 são comparados para encontrar o maior.

Bubble Classificar 33 maior que 21 sem troca

O valor 33 é maior que 21, portanto não hÔ troca.ping ocorre.

Passo 4)

Bubble Classificar comparando 33 e 3

Os valores 33 e 3 são comparados para encontrar o maior.

Bubble Classificar trocaping 33 e 3

O valor 33 é maior que 3, então trocamos suas posições.

Bubble Ordenar lista ordenada após a primeira iteração

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:

Bubble Classificar lista após a segunda iteração

Terceira Iteração

A nova lista após a terceira iteração é a seguinte:

Bubble Classificar lista após a terceira iteração

Quarta Iteração

A nova lista após a quarta iteração é a seguinte:

Bubble) Ordenar lista totalmente ordenada após a quarta iteração

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:

Bubble Classificar Python explicação do código

AQUI,

  1. Define uma função bubbleSort que aceita um parâmetro theSeq. O código não produz nada.
  2. Obtém o comprimento do array e atribui o valor a uma variÔvel n. O código não produz nenhuma saída.
  3. 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.
  4. 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.
  5. Inicia o loop interno que compara todos os valores da lista, do primeiro ao último. O código não produz nada.
  6. 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.
  7. 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.
  8. O valor de theSeq[j + 1] é atribuído à posição de theSeq[j]. O código não produz nenhuma saída.
  9. O valor da variÔvel tmp é atribuído à posição theSeq[j + 1]. O código não produz nenhuma saída.
  10. 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.
  11. Utiliza uma instrução if para verificar se o valor da variÔvel flag é 0. O código não produz nenhuma saída.
  12. Se o valor for 0, chamamos a instrução break que sai do loop interno.
  13. Retorna o valor de theSeq depois de classificado. O código gera a lista classificada.
  14. Define uma variÔvel el que contém uma lista de números aleatórios. O código não produz nada.
  15. Atribui o valor da função bubbleSort a uma variÔvel result.
  16. 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).

Perguntas Frequentes

BubblA ordenação por bolha raramente é executada em IA de produção, mas ajuda a ensinar a lógica de ordenação por trÔs da preparação de dados. Os pipelines de aprendizado de mÔquina ordenam recursos, pontuações e previsões usando algoritmos mais rÔpidos, mas a ordenação por bolha esclarece o conceito de comparação e troca para iniciantes.

Sim. Assistentes de IA podem escrever algoritmos de ordenação por bolha em Python, Java, ou C++ e adicionam a otimização de sinalizador que interrompe a execução antecipadamente em uma lista ordenada. Eles também podem sugerir algoritmos mais rÔpidos quando o conjunto de dados se torna muito grande.

Ɖ chamado de ordenação por bolha porque os valores maiores gradualmente "emborracham" para o final da lista a cada iteração, assim como bolhas de ar subindo Ć  superfĆ­cie da Ć”gua, enquanto os valores menores afundam em direção ao inĆ­cio.

BubblO algoritmo e sort tem complexidade de tempo O(n²), o que é muito mais lento do que o quicksort e o merge sort, que têm complexidade O(n log n). BubblO algoritmo e sort é adequado para exemplos pequenos ou didÔticos, enquanto o quicksort e o merge sort lidam com grandes conjuntos de dados do mundo real de forma eficiente.

Resuma esta postagem com: