Buongiorno @andbin perdona il mio ritardo nel rispondere.
andbin ha scritto:
Assegna i due array a due variabili (per non ripetere il getArray() molte volte, chiaramente).
Determina la lunghezza "minima" dei due array (puoi usare Math.min() ).
Fai un ciclo con una i da 0 per minore di questa lunghezza minima. Essendo quella minima, i valori ci sono tutti per entrambi gli array. Compara gli elementi i-esimi, se uno dei due è minore o maggiore dell'altro hai GIA' il risultato (non devi proseguire). Se sono uguali, non fai nulla (il ciclo prosegue).
Io avevo fatto esattamente così inizialmente, ma poi mi sono accorto (come ti dicevo in precedenza) che se io ho due array (uso le quadre per semplicità) [0,9,2] e [0,9], deve venire prima [0,9] e poi [0,9,2] come giustamente mi hai fatto notare, ma con un codice scritto con quella logica ho constatato che il risultato non è quello che ci si aspetta. Perché per esempio, se provo a mettere (nella List<MyArray>) i seguenti array
in questo ordine:
[4,5,2]
[1,5,2]
[0,6,2]
[0,5,7]
[0,9,2]
[0,9]
L'output generato dall'algoritmo è questo:
[0,5,7] giusto...
[0,6,2] giusto...
[0,9,2] sbagliato...no?
[0,9] sbagliato...no?
[1,5,2] giusto...
[4,5,2] giusto...
Se invece nella List<MyArray > mettessi prima [0,9] e poi [0,9,2] allora l'output sarebbe esatto. Perché in effetti ragionandoci, credo che il metodo sort vada a prendere in questo caso prima [0,9] confrontandolo poi con [0,9,2] e il metodo compare ritornando 0, fa si che non venga spostato niente nella lista per quel particolare processo.
Quindi come posso risolvere snellendo il mio codice che aggiunge zeri o modificandolo completamente? Ti ringrazio in anticipo