Radix sort
Il radix sort effettua l'ordinamento sulle cifre dalla meno significativa alla più significativa, sapendo che:
Ogni numero è composto da cifre di valori, su cui la -esima è la più significativa
radix(Array A, int d)
for i = 1 to d
sort(A, i) // Ordinamento stabile in A sulla cifra i
L'algoritmo è corretto perchè, per induzione su :
- Caso base per , l'unica colonna presente viene ordinata
- Passo induttivo assumendo che le colonne siano ordinate, finisce con in ordine:
- Se due cifre in sono diverse, l'algoritmo le mette in posizione corretta
- Se sono uguali, l'algoritmo stabile garantisce che siano nello stesso ordine per le cifre successive
La complessità è se sort
è il counting sort per le cifre.
Suddivisione di una word
Dati numeri da bit raggruppati in bit con valori in , l'algoritmo esegue in tempo:
Si vuole trovare un che minimizza :
- Se , allora per cui si diminuisce con il più grande
- Se , allora si diminuisce con il più grande fino a , cioè
assicurando sempre una complessità lineare di , se però nell'ultimo caso .