Come invertire una matrice di numeri con Java

January 12

Invertendo il contenuto di una matrice Java è un compito comune, e non richiede molto codice. Esistono diversi approcci possibili per invertire ordine matrice, ma la più semplice è lavorando da ciascuna estremità della matrice verso il centro, scambiando ciascuna coppia di elementi a turno. Per scambiare le posizioni degli elementi all'interno di un array, è necessario copiare circa la metà di essi in variabili temporanee, come si va, dal momento che non appena si sposta un elemento in una posizione diversa, avrete sovrascritto un altro elemento.

istruzione

1 Preparare l'array. Se non si dispone già di un oggetto array in un programma, creare uno ora:

// Crea un array e specificare la lunghezza

int [] someNumbers = new int [13];

// Istanziare l'array con alcuni elementi

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

someNumbers [i] = i;

Questo esempio utilizza tipo int primitivi, ma il metodo funziona per array di qualsiasi tipo, compresi gli oggetti. Per questo esempio, l'array contiene inizialmente numeri esecuzione da zero verso l'alto.

2 Creare variabili per tenere traccia della vostra posizione come ci si sposta lungo l'array da entrambe le estremità:

// One inizia nella prima posizione, l'altro in ultima

int leftPosn = 0;

int rightPosn = someNumbers.length-1;

L'algoritmo userà un ciclo, ogni iterazione che comporterà scambiando due elementi, iniziando scambiando il primo e l'ultimo, proseguendo poi verso il centro.

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

// Verificare se le posizioni destra e sinistra devono ancora raggiungere il centro

mentre (leftPosn <rightPosn)

{

// Contenuti ciclo va qui

}

Il ciclo continuerà finché i contatori sinistro e destro non hanno ancora raggiunto la metà della matrice.

4 Scambiare ciascuna coppia di elementi a loro volta. All'interno del vostro ciclo while (a "contenuti ciclo va qui"):

// Copiare l'elemento più a sinistra della coppia in una nuova variabile temporanea

int tempCopy = someNumbers [leftPosn];

// Copia l'elemento più a destra nella posizione più a sinistra

someNumbers [leftPosn] = someNumbers [rightPosn];

/ * Copiare l'elemento più a sinistra originale dalla 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 contatore posizione lungo ogni volta che il ciclo viene eseguito. Nel blocco di codice while (dopo lo scambio):

// posizioni di incremento e decremento di continuare a lavorare verso il centro

leftPosn ++;

rightPosn--;

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

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

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

Consigli e avvertenze

  • L'algoritmo funziona per matrici di entrambi pari e dispari lunghezze, come per lunghezze dispari l'elemento centrale non ha bisogno di essere spostato affatto.
  • Fare attenzione quando si usano i loop, come un semplice errore può causare un ciclo infinito, rendendo il crash del programma.