Home Articoli Informatica, programmazione, algoritmi Ordinamento in tempo lineare: si può ! --- Parte 2 di 3: Radix Sort

Page Rank Check    





Ordinamento in tempo lineare: si può ! --- Parte 2 di 3: Radix Sort
Articoli - Informatica, programmazione, algoritmi
Scritto da RedBaron85   
Sabato 30 Gennaio 2010 15:04

Ordinamento in tempo lineare: si può ! --- Parte 2 di 3: Radix Sort

 

Radix sort veniva utilizzato per ordinare le schede perforate, ordinando le schede in base alla loro cifra MENO significativa, separandole in “contenitori”, procedendo poi con la seconda cifra meno significativa, fino a fare r passaggi, dove r è il numero di CIFRE che compongono gli elementi.

Ci vogliono quindi r passaggi, ma ad ogni passaggio bisogna ordinare l'insieme di dati in base alla i-esima cifra meno significativa.

Serve quindi un algoritmo di ordinamento “ausiliario”, che deve essere – tra le altre cose – stabile; il counting sort, esaminato precedentemente, si presta bene allo scopo.

 

Lo pseudocodice dell'algoritmo è, quindi, banalissimo:

RADIX-SORT(A,r)

for(i=1 to r) fai-un-ordinamento-stabile-di-A-sulla-cifra-i

 

 

 

E' possibile dimostrare che, se l'algoritmo di ordinamento stabile impiega tempo O(n+k), con n numero di elementi da ordinare e k numero di valori che ciascun elemento può assumere (es.: per i numeri da 0 a 9, tale valore è 10), allora radix sort impiega tempo O(r(n+k)).

Quando r è costante e k = O(n), radix sort viene eseguito in tempo lineare.

 

Radix sort è utile per effettuare l'ordinamento di collezioni di elementi caratterizzati da più campi-chiave, come ad esempio le date (a patto di porre l'anno, equivalente alla cifra più significativa, a sinistra, scrivendo la data nella forma AAAA/MM/GG), che utilizzerò per mostrare, appunto, un esempio:

Algoritmo di ordinamento in tempo lineare Radix Sort, funzionamento

 

Da notare l'importanza della proprietà di stabilità dell'algoritmo che ordina le varie colonne, in presenza di valori duplicati (seguire, ad esempio, la coppia “2008”), specialmente in presenza di dati “satellite” associati alle varie date.

Tags:     ordinamento      tempo lineare      sort      sorting      radix sort
Ultimo aggiornamento Mercoledì 02 Novembre 2011 16:12
 

Ti è piaciuto questo articolo ? Condividilo !



RedBaron85.com Forum community banner

Non hai trovato quello che cercavi ?
Ricerca personalizzata
Copyright © 2012 RedBaron85.com: Informatica, CG 2D e 3D, Blender, Python, Java 2D e 3D, 3D Studio e altro ancora!. Tutti i diritti riservati.
Joomla! è un software libero rilasciato sotto licenza GNU/GPL.

Milanese Francesco - Partita IVA: 04950350878

AltroArticoliblog utentiBlueprintsContestenglishProgrammazioneModelliElencoNewsTexturesTutorialsVideotutorials