def xpto(lista): # ordena lista de modo decrescente for i in range(len(lista)): m = max(lista[i:]) ind = lista.index(m) lista[i],lista[ind] = lista[ind], lista[i] return listapretende-se saber o que faz, como o faz e se, eventualmente, tem algum erro e como pode ser corrigido.
O programa recebe como entrada uma lista de números e devolve essa mesma lista ordenada de modo decrescente. Funciona percorrendo a lista da esquerda para a direita e na etapa i determinar a posição do maior elemento da sub-lista desde a posição i até ao final. De seguida esse elemento troca a sua posição com o elemento na posição i. Existe uma situação em que este algoritmo não funciona, quando existem elementos repetidos. Para corrigir, basta usar a instrução
ind = lista.index(m,i)no lugar de
ind = lista.index(m)
Sem comentários:
Enviar um comentário