essendo che il numero massimo è limitato ed essendo che mi sembra un esercizio tipo da info teorica..puoi fare così, :
Dato X, il tuo array lungo m
1) crei un array Ylungo m
2) per ogni elemento x di X
2a) Y[x] = Y[x] + 1
3) hai ordinato l'array, ovvero, Y è della forma:
e significa che in X ci sono 0 elementi uguali a 0, 2 elementi uguali a 1, i elemento uguale a 2, ..., z elementi uguali m; se vuoi un output basta che stampi, per ogni Y[i] tante i quanto vale Y[i]codice:Y[0] = 0 Y[1] = 2 Y[2] = 1 . . . Y[m] = z
se usi un criterio di costo lineare, costa O(n)
se usi un criterio di costo logaritmico costa O(nlog(m)) (perchè fai Y[x] = Y[x] + 1, e sia Y[x] che x al massimo valgono m)
spero di averti aiutato e di aver centrato il problema!![]()