La repository contiene i file relativi allo svolgimento della seconda traccia della prova pratica.
Maggiori informazioni su scelte implementative, raccolta dati e in generale del lavoro svolto sono disponibili nel file Relazione.pdf.
Profiler.py:
Il codice si presenta con lo script principale, profiler.py, dove vengono passati in input, grazie al modulo
argparse ed ai suoi metodi, il numero di elementi presenti all’interno della lista, il range di rappresentazione e gli algoritmi di cui si vuole effetuare il profiling. Si è scelto di implementare il modulo argparse per facilitare l’inserimento dei dati con l’utilizzo del metodo add_argument.
Tale lavoro di profiling è reso disponibile grazie all'implementazione del modulo cProfile, che scrive in un file in un formato proprio i tempi di esecuzione delle funzioni. Il modulo pStats, invece, consente di leggere ciò che è presente all’interno di questo
file e stampa a schermo il suo contenuto.
Per maggiori informazioni, consultare README_profiler.md.
QSS_module.py:
Tale modulo contiene le definizioni delle varianti dell’algoritmo di ordinamento QuickSort in cui la scelta
del pivot avviene tramite algoritmi di selezione. Si è scelto di implementare una funzione quickSelectSort, che prende
in input una lista ed un parametro che indica quale tra gli algoritmi di selezione dovrà essere eseguito. Questa funzione
richiama a sua volta la funzione recursiveQuickSelectSort che, a differenza della prima, prende in più in input due
parametriche indicano l’inizio e la fine della lista, estrae il pivot con l’algoritmo di selezione scelto, crea la
partizione ed infine, ricorsivamente, risolve lo stesso problema nelle sottoliste.
Per maggiori informazioni, consultare README_QSS_module.md.
sorting, selection, strutture:
Nelle cartelle selection, sorting e strutture sono presenti i moduli d’appoggio richiamati all’interno di profiler.py
e di QSS_module.py, contenenti rispettivamente le definizioni degli algoritmi di selezione, di ordinamento e delle strutture dati.
Graphs:
In tale cartella sono presenti i grafici e le tabelle con i dati raccolti sperimentalmente.
Autori:
- Mihai Jianu 0255043
- Daniele La Prova 0253508
- Lorenzo Mei 0251766