Realizzare l’algoritmo che permette di ordinare una lista di numeri interi. Sviluppare un’analisi e formulare un esempio in modo da ottimizzare la struttura del codice.
Analisi
Per realizzare l’algoritmo che richiede di ordinare una lista di numeri interi dobbiamo pensare in maniera razionale alle possibili soluzioni ed a gestire le eventuali eccezioni che possono insorgere durante l’esecuzione del programma. Per prima cosa dobbiamo procedere con la creazione della funzione utile a riempire la lista con i numeri letti da tastiera e solo successivamente realizzare il vero e proprio algoritmo che permette di ordinare la lista. Per eseguire ciò ho implementato, nel mio programma, l’algoritmo Bubble Sort – ordinamento a bolle – che mi permette di suddividere la lista in due parti, una sottolista ordinata e una da ordinare. Ma vediamo in dettaglio la strategia …
Risoluzione
La strategia di ordinamento prevede di eseguire tanti scambi tra coppie di interi adiacenti, in modo che l’elemento più grande scorra lungo la lista posizionandosi all’ultima posizione della stessa, raggiungendo così la parte destra come una vera e propria bolla d’aria che sale dal basso verso l’alto. Tutto ciò si ripete in maniera iterativa finchè la lista non è del tutto ordinata e quindi c’è la possibilità di eseguire degli scambi.
Per eseguire il tutto dobbiamo implementare la bellezza di due cicli annidiati, il primo è un while che viene eseguito finchè c’è la possibilità di ordinamento tra numeri, mentre l’altro è un ciclo for che esegue lo scambio tra coppie adiacenti partendo da indice 0.
All’inizio la sotto lista di destra è vuota ma viene incrementata la sua dimensione di una posizione ad ogni iterazione del ciclo while. Il for parte con indice 0 e si arresta a N-2 cioè indice < N-1. Questo perchè lo scambio si esegue tra l’indice e l’indice+1 e tutto ciò permette di non sforare la dimensione del vettore.
Implementazione algoritmo - ordinare una lista di interi - bubble sort
def riempi_lista(n):
lista = []
print('Inserire numeri all''interno della lista')
for i in range(n):
lista.append(int(input()))
return lista
def bubbleSort(lista):
n = len(lista)
for i in range(n-1):
for j in range(0, n-i-1):
if lista[j] > lista[j+1] :
lista[j], lista[j+1] = lista[j+1], lista[j]
return lista
lista = riempi_lista(5)
print(bubbleSort(lista))
Per testare il funzionamento dell’algoritmo consiglio di scaricare un editor di testo come Visual Studio Code o usufruire degli editor online gratis che permettono, senza scaricare alcun tipo di file, di realizzare algoritmi e testarli. Dopo averne valutati alcuni, ho deciso di affidarmi a Repl.it, semplice, affidabile e potente.
Buon Coding : )