È l’algoritmo di ordinamento naive più semplice dal punto di vista dell’implementazione. Si implementa iterando su tutta la lista
len(lista)
volte e invertendo le coppie di elementi che hanno il primo elemento maggiore del secondo.
def bubble(lista):
for i in range(len(lista)):
for j in range(len(lista)-1):
if lista[j] > lista[j+1]:
lista[j], lista[j+1] = lista[j+1], lista[j]
return lista
Costa sempre .
Ottimizzazione
Si può ottimizzarlo aggiungendo una flag che controlla se al primo ciclo avvengono scambi. In caso contrario, cioè quando la lista è già ordinata, costa .
def bubble(lista):
for i in range(len(lista)):
scambi = False
for j in range(len(lista)-1):
if lista[j] > lista[j+1]:
lista[j], lista[j+1] = lista[j+1], lista[j]
scambi = True
if not scambi:
break
return lista