Supponiamo che abbia una matrice di valori float nel seguente formato:
{ 1.34, 1.15, 1.1, 1.2, 1.26, 1.10, 1.20, 1.17 }
Supponiamo che siano stati forniti dall'input dell'utente (o da qualche altro meccanismo), dove l'utente prende "1.1" per indicare effettivamente "1.01" - il che significa che è separato da "1.10".
L'utilizzo di un algoritmo di ordinamento standard (bubble sort, ordinamento rapido o qualche ordinamento specifico per il framework) determinerà una matrice che dovrebbe essere simile alla seguente:
{ 1.1, 1.10, 1.15, 1.17, 1.2, 1.20, 1.26, 1.34 }
Tuttavia, l'array di output richiesto sarebbe il seguente:
{ 1.1, 1.2, 1.10, 1.15, 1.17, 1.20, 1.26, 1.34 }
Sto pensando che il modo per farlo sarebbe quello di scorrere l'array prima di ordinare e:
- controlla se il valore di ha N decimali
- se sì, eleva a M (N + 1) posizioni decimali - aggiungi uno 0 iniziale
Questo porterebbe a due array, uno contenente valori con numero decimale N o M (input utente non elaborato) e uno contenente tutti i valori con numero decimale M (input utente "igienizzato"). Il che significherebbe che l'ordinamento dell'array contenente i valori con le posizioni decimali M fornirebbe il risultato richiesto.
Ci sono altri modi per farlo? Sto cercando algoritmi più veloci, o quelli con un overhead inferiore.
Vedo che questo è un dominio problematico comune e intendo dire che ci sono molti modi per risolvere questo problema. Quali sono alcuni degli altri algoritmi che possono essere utilizzati per ottenere il risultato richiesto.