Hvordan Reverse en rekke numrene med Java
Reversering av innholdet av en Java-matrise er et vanlig oppgave, og krever ikke mye kode. Det er forskjellige mulige tilnærminger til å reversere funksjoner orden, men det enkleste er å arbeide fra hver ende av rekken mot sentrum, bytte hvert par av elementer i omdreining. For å bytte element stillinger innenfor en rekke, må du kopiere rundt halvparten av dem i midlertidige variabler som du går, fordi så snart du flytte et element til en annen posisjon, vil du ha overskrevet et annet element.
Bruksanvisning
1 Forbered array. Hvis du ikke allerede har en rekke objekt i programmet, opprette en nå:
// Oppretter en matrise og angi lengden
int [] someNumbers = new int [13];
// Instantiate array med noen elementer
for (int i = 0; i <someNumbers.length; i ++)
someNumbers [i] = i;
Dette eksemplet bruker primitive typen ints, men metoden fungerer for matriser av alle typer, inkludert stedene. For dette eksempelet inneholder matrisen utgangspunktet tall som går fra null og oppover.
2 Opprette variabler å holde orden på din posisjon når du flytter sammen matrisen fra begge ender:
// Man begynner i den første stilling, den andre i den siste
int leftPosn = 0;
int rightPosn = someNumbers.length-1;
Algoritmen skal bruke en løkke, vil hver iterasjon som involverer bytte to elementer, som begynner ved å bytte den første og siste, deretter fortsetter mot midten.
3 Lag en løkke for din algoritme. Du kan bruke hva slags løkke gjør mest fornuftig for deg, men i dette tilfellet det enkleste alternativet er en stund sløyfe:
// Sjekke om venstre og høyre stillinger har fortsatt å nå midten
while (leftPosn <rightPosn)
{
// Løkke innhold går her
}
Sløyfen vil fortsette så lenge som venstre og høyre tellere ennå ikke har nådd midten av tabellen.
4 Bytte hvert par av elementer i omdreining. Inne mens sløyfe (på "loop innhold går her"):
// Kopiere lengst til venstre element i paret inn i en ny midlertidig variabel
int tempCopy = someNumbers [leftPosn];
// Kopiere lengst til høyre element inn i venstre posisjon
someNumbers [leftPosn] = someNumbers [rightPosn];
/ * Kopiere originalen lengst til venstre element fra den midlertidige variable
inn lengst til høyre * /
someNumbers [rightPosn] = tempCopy;
Den midlertidige variable trenger bare å være tilgjengelig i løpet av hver iterasjon av løkken.
5 Flytt posisjonstelleren variabler langs hver gang løkken utfører. I mens loop kodeblokk (etter swap):
// tilvekst eller redusere stillinger for å jobbe videre mot midten
leftPosn ++;
rightPosn--;
Teste koden ved å kjøre programmet og gi ut innholdet i matrisen som følger (etter mens loop):
for (int j = 0; j <someNumbers.length; j ++)
System.out.println (someNumbers [j]);
Hint
- Algoritmen fungerer for matriser med både like og ulike lengder, som for odde lengder midtelementet ikke trenger å bli beveget i det hele tatt.
- Vær forsiktig når du bruker looper, som en enkel feil kan føre til en uendelig loop, noe som gjør programmet krasjer.