Domanda Come ruotare array in java?

Stato
Discussione chiusa ad ulteriori risposte.

Ødinø

Utente Electrum
5 Gennaio 2014
485
5
61
128
Ciao ragazzi, :alesisi: vorrei sapere se esiste una soluzione ottimale per ruotare un array, il mio problema sorge quando cerco di ruotare gli ultimi elementi dell'array, sforando cosi la lunghezza massima. nel caso volessi ruotare l'array di più posizioni di quante sia composto l'array stesso(quindi fargli fare più di un giro completo) come dovrei fare?
ps: senza usare arraylist.

questo è il testo dell'esercizio che dovrei risolvere:

Scrivere un programma che dato un array di interi ne ruoti circolarmente il contenuto (verso destra o verso sinistra) di M posizioni e visualizzi la configurazione finale. Il verso della rotazione ed il valore di M sono richiesti come input da tastiera.
 
Fai semplicemente M cicli, in cui ti salvi l'ultimo elemento in una variabile temporanea, e tutti gli altri li shifti (fai un ciclo che parte dalla dimensione dell'array meno uno, e via così fino ad arrivare allo zero). E alla posizione zero ci metti il valore nella variabile temporanea.
 
Visto che hai chiesto qualcosa di ottimale (immagino in tempo di calcolo), potresti fare qualcosa di questo tipo:
- Copia i primi M valori su un array temporaneo
- Assegna all' j-esimo valore il valore di M+k, per tutti i j che vanno da 0 a Array.lenght()-M-1
- Copia l'array temporaneo nella parte finale dell'array
Fai il contrario se vuoi shiftare a destra invece che a sinistra.

È un po' più impegnativa da programmare, ma è sicuramente più veloce della classica soluzione intuitiva: shifta di 1 per M volte.
 
  • Mi piace
Reazioni: Ødinø
Stato
Discussione chiusa ad ulteriori risposte.