Se ci sono n variabili ognuna con m possibili valori. (Per intero, m è 2 miliardi qualcosa.)
In primo luogo, mappare ogni valore possibile su un numero intero da 0 a m-1 nell'ordine. E definire le funzioni di mappatura.
index(v): value to integer
value(i): integer to value
Secondo, annulla le variabili n e conta quante volte è apparso ogni valore.
for v in variables {
counter[index(v)] += 1
}
Infine, metti in loop il contro-array e inserisci i valori nella matrice dei risultati.
for i in 0...m-1 {
for j in 1...counter[i] {
result.append(value(i))
}
}
L'array dei risultati dovrebbe essere ordinato e la complessità di questo algoritmo è O (n + m).
Potrebbe essere migliore di O (n * log (n)) per grandi n e piccole m.