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 .