Bubble Sort

Con poche righe di codice puoi ottenere un’animazione dell’ordinamento dei numeri da 1 a 100 mescolati a caso

from random  import shuffle
from vpython import *

def bubble_sort(lista):
    n = len(lista)
    for i in range(n-1):
        for j in range(n-1-i):
            if(lista[j] > lista[j+1]):
                temp       = lista[j]
                lista[j]   = lista[j+1]
                lista[j+1] = temp

                g.data = [(x,y) for x,y in enumerate(lista)]
                sleep(0.001)

NUMERO = 100
numeri = list(range(1,NUMERO+1))
shuffle(numeri)
g = gvbars(color = color.red)  # Barre verticali rosse
bubble_sort(numeri)

Trinket

Con poche righe di codice puoi ottenere nella pagina web l’animazione dell’ordinamento dei numeri da 1 a 100 in ordine inverso

Miglioramenti

  1. I due numeri scambiati sono colorati di blu.
  2. L’utente sceglie se i numeri sono disposti alla rovescia oppure mescolati a caso.
from random  import shuffle
from vpython import *

def bubble_sort(lista):
    n = len(lista)
    for i in range(n-1):
        for j in range(n-1-i):
            if(lista[j] > lista[j+1]):
                temp       = lista[j]
                lista[j]   = lista[j+1]
                lista[j+1] = temp
 
                g1.data = [(x,y) for x,y in enumerate(lista)]
                g2.data = [(j, lista[j]), (j+1, lista[j+1])]
                sleep(0.001)

NUMERO = 100
numeri = list(range(1, NUMERO+1))

s = input("r (reversed), s (shuffle) -> ")
s = s.lower()
if(s == "r"):   numeri.reverse()
elif(s == "s"): shuffle(numeri)
else:           print("???")

g1 = gvbars(color = color.red )  # Barre verticali rosse
g2 = gvbars(color = color.blue)  # Barra verticale blu
bubble_sort(numeri)

g1.data = [(x,y) for x,y in enumerate(numeri)]
g2.data = []

Lascia un commento