Il problema dell'ordinamento di un
insieme, Ă© un problema ricorrente in campo informatico che oltre ad avere un importanza fondamentale in ambito applicativo, rappresenta anche un ottimo strumento didattico per chi desidera prendere dimestichezza con la programmazione.
Un
algoritmo di ordinamento Ă© appunto un
algoritmo capace di ordinare un insieme seguendo una certa
relazione d'ordine. Ad esempio si possono trovare facilmente tanti casi di relazioni d’ordine, che spesso esprimiamo con parole come prima/dopo, precede/segue, superiore/inferiore, a monte/a valle, ecc.
Di algoritmi di ordinamento ne esitono diversi e di diversi tipi. In questa guida affronteremo gli algoritmi che in gran parte operano esclusivamente sulla base di
scambi e
confronti, facendo qualche accenno anche alla complessitá di ciascuno.
Analizzeremo algorimti di semplice realizzazione, a scapito della loro complessita computazionale, cioè scarsa efficienza (Bubble Sort, Insertion Sort, Selection Sort), fino ad arrivare a quelli strutturalmente più complessi ma molto efficienti, che fanno uso dell tecnica
Divide et Impera, con il meccanismo della
ricorsione (Merge Sort, Quick Sort).
Tutti gli algoritmi proposti si baseranno su vettori (o array) di numeri interi.