ordinare una lista

Ordinare una lista di numeri

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.

Leggi articolo   La regressione logistica

Questa semplice immagine animata ci mostra in breve il funzionamento dell’algoritmo. Tutti i numeri della lista vengono confrontati tra di loro in modo da determinare sempre quello più grande. In questo modo andiamo ad ordinare una lista di interi in maniera semplice ed ottimizzata.

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 : )

Condividi il post

Condividi su facebook
Condividi su google
Condividi su twitter
Condividi su email
Condividi su whatsapp