Nwlapcug.com


Come invertire una matrice di numeri con Java

Invertendo il contenuto di un array di Java è un'attività comune e non richiede molto codice. Ci sono diversi approcci possibili per invertire l'ordine di matrice, ma il più semplice è di lavoro da ogni estremità della matrice verso il centro, lo scambio di ogni coppia di elementi a loro volta. Per scambiare le posizioni di elemento all'interno di una matrice, è necessario copiare circa la metà di loro in variabili temporanee come si va, dal momento che, non appena si sposta un elemento in una posizione diversa, si verrà sovrascritto un altro elemento.

Istruzioni

1

Preparare la matrice. Se non avete già un oggetto di matrice nel vostro programma, crearne uno adesso:

creare una matrice e specificare la lunghezza

int [] someNumbers = new int [13];

creare un'istanza della matrice con alcuni elementi

per (int i = 0; i < someNumbers.length; i + +)

someNumbers [i] = i;

Questo esempio utilizza il tipo primitivo ints, ma il metodo funziona per matrici di qualsiasi tipo, inclusi gli oggetti. In questo esempio, la matrice contiene inizialmente i numeri da zero verso l'alto.

2

Creare variabili per tenere traccia della vostra posizione come si sposta lungo la matrice da entrambe le estremità:

uno comincia nella prima posizione, l'altro nell'ultimo

int leftPosn = 0;

int rightPosn = someNumbers.length-1;

L'algoritmo sta per utilizzare un ciclo, ogni iterazione che coinvolgerà lo scambio di due elementi, inizio scambiando il primo e l'ultimi, poi proseguendo verso il centro.

3

Creare un ciclo per l'algoritmo. È possibile utilizzare qualsiasi tipo di rende ciclo più senso a voi, ma in questo caso l'opzione più semplice è un po ' di tempo ciclo:

controllare se le posizioni di sinistra e destra sono ancora raggiungere il centro

while(leftPosn<rightPosn)

{

contenuto ciclo va qui

}

Il ciclo continuerà fino a quando i contatori di destro e sinistro non hanno ancora raggiunto il centro della matrice.

4

Lo scambio di ogni coppia di elementi a loro volta. All'interno il vostro istante ciclo (al "ciclo contenuto goes here"):

copiare l'elemento più a sinistra nella coppia in una nuova variabile temporanea

int tempCopy = someNumbers [leftPosn];

copiare l'elemento più a destra nella posizione più a sinistra

someNumbers [leftPosn] = someNumbers [rightPosn];

/ * copiare l'elemento più a sinistra originale della variabile temporanea

nella posizione più a destra * /

someNumbers [rightPosn] = tempCopy;

La variabile temporanea deve solo essere disponibile durante ogni iterazione del ciclo.

5

Spostare le variabili di contatore di posizione lungo ogni volta che il ciclo viene eseguito. Nel mentre blocco di codice del ciclo (dopo lo scambio):

posizioni di incremento e decremento di continuare a lavorare verso la metà

leftPosn + +;

rightPosn...;

Testare il codice di esecuzione del programma e l'output il contenuto della matrice come segue (dopo il po ciclo):

per (int j = 0; j < someNumbers.length; j + +)

System.out.println(someNumbers[j]);

Consigli & Avvertenze

  • L'algoritmo funziona per matrici di lunghezze sia pari e dispari, per quanto riguarda le lunghezze dispari che l'elemento intermedio non ha bisogno di essere spostato a tutti.
  • Attenzione quando si usano loop, come un semplice errore può causare un ciclo infinito, rendendo il vostro arresto anomalo del programma.