Programadores Online Semanalmente (Algoritmo de Bolha)

Olá a todos, bem-vindos ao Programmers Online Weekly! Nesta edição, nos aprofundaremos em um algoritmo de classificação clássico - o algoritmo de bolha, e anexaremos uma implementação de código específica.

Introdução

O algoritmo de bolha é um algoritmo de classificação simples, mas ineficiente. Seu princípio é muito intuitivo: através da comparação e troca de elementos adjacentes, o maior (ou menor) elemento é gradualmente "borbulhado" até o final do array. Deixe-me explicar na primeira pessoa.

Primeiro, vamos dar uma olhada na implementação do código do algoritmo de bolha:

código

def bubble_sort(arr):
    n = len(arr)
    for i in range(n - 1):  # 外层循环控制比较轮数
        for j in range(n - i - 1):  # 内层循环控制每轮的比较次数
            if arr[j] > arr[j + 1]:
                arr[j], arr[j + 1] = arr[j + 1], arr[j]  # 交换元素位置

arr = [4, 2, 7, 1, 3]
bubble_sort(arr)
print("排序结果为:", arr)

princípio

O texto acima é a implementação de código do algoritmo de classificação por bolha. Primeiro, definimos uma função bubble_sorte passamos um array para ser classificado arr. Em seguida, usamos um loop de dois níveis para comparar elementos adjacentes e trocá-los se o elemento anterior for maior que o próximo elemento. Através desta operação, cada rodada de comparação pode "borbulhar" o maior elemento até o final do array. Finalmente, você pode obter um array ordenado.

Então, qual é a complexidade de tempo da classificação por bolha? Como precisamos realizar dois níveis de loops, o loop externo é executado n - 1 vezes e o loop interno é executado n - i - 1 vezes, então o número total de comparações é ( n − 1 ) + ( n − 2 ) +... + 1 (n - 1) + (n - 2) + ... + 1( n-1 )+( n-2 )+...+1 , isto é,n × ( n − 1 ) ÷ 2 n \times (n - 1) \div 2n×( n-1 )÷2 . Portanto, a complexidade de tempo da classificação por bolha éO ( n 2 ) O (n ^ 2)Ó ( n2 ). Em aplicações práticas, se a matriz a ser classificada for grande, a classificação por bolha pode parecer mais lenta, mas para conjuntos de dados pequenos, o algoritmo de bolha ainda é uma boa escolha.

Espero que, através da introdução nesta edição, todos tenham uma compreensão mais profunda do algoritmo da bolha. Se você tiver alguma dúvida ou comentário, deixe-o na área de comentários. Até a próxima edição!

anunciar

Anúncio 1

Programmers Online Weekly está solicitando manuscritos.
Link: http://t.csdn.cn/o5LYu

Anúncio 2

"Coluna Python e Unity" começou! ! ! Confira e inscreva-se!
Link: http://t.csdn.cn/nGiXC

Anúncio 3

Espaço publicitário para alugar! Se quiser anunciar, siga-me e envie-me uma mensagem privada!

投放
得到宣传目的
阅读
阅读
榨干了我
程序员在线周刊
广告
用户

Acho que você gosta

Origin blog.csdn.net/Python_enjoy/article/details/132948510
Recomendado
Clasificación