O algoritmo
Uma implementação clássica, marcante e simples de ordenação de vetores, onde a cada iteração um elemento flutua para o topo. Humm! Dai vem o nome "Bolhas". Este é um assunto obrigatório em universidades ou cursos de programação.
Mesmo que grande parte dos nossos problemas sejam os frameworks e linguagens que escolhemos ter em nossas vidas, o estudo de algoritmo é essencial para desenvolvedores em geral, através desta dedicação, aprendemos técnicas que tornam nosso trabalho eficiente.

A implementação
Abaixo temos uma implementação do BubbleSort flexível que possibilita a ordenação crescente ou decrescente através do argumento (asc), a função privada __should_swap__ foi definida para a classificação dos valores, decidindo a troca de posições no vetor.
O array.copy foi utilizado para evitar um efeito colateral (side-effect) no argumento vetor.
Para validar o algoritmo use o pytest informando o nome do arquivo.
Teste de mesa

Os números da direita com menor valor são movidos (ou flutuados) para esquerda, quando classificamos como ordem crescente.
Qual o problema do BubbleSort?
No melhor cenário, o algoritmo retorna n
de operações, onde n
é igual ao tamanho do vetor, porém no pior cenário ele pode retornar n²
. O tamanho da lista irá determinar o tempo de processamento.
Para resolver estre problema existem diversos algoritmos para ordenação, com abordagens simples e sofisticadas:
Simples
Sofisticados
Finalizando
Este foi mais um exemplo de implementação de algoritmos, para relembrar ou adicionar ao seu kernel, até a próxima.