Jak odwrócić tablicę int w Javie?


238

Próbuję odwrócić tablicę int w Javie.

Ta metoda nie odwraca tablicy.

for(int i = 0; i < validData.length; i++)
{
    int temp = validData[i];
    validData[i] = validData[validData.length - i - 1];
    validData[validData.length - i - 1] = temp;
}

Co jest z tym nie tak?


31
Widzę, co zrobiłem źle. Powinny być poprawne Data.length / 2. W przeciwnym razie odwróci się, a następnie cofnie.
MichaelScott

4
Zobacz en.wikipedia.org/wiki/In-place_algorithm, który zawiera opis poprawnej wersji tego algorytmu.
Dean Povey

Odpowiedzi:


284

Aby odwrócić tablicę int, zamieniasz elementy aż do osiągnięcia punktu środkowego, w ten sposób:

for(int i = 0; i < validData.length / 2; i++)
{
    int temp = validData[i];
    validData[i] = validData[validData.length - i - 1];
    validData[validData.length - i - 1] = temp;
}

Sposób, w jaki to robisz, zamieniasz każdy element dwa razy, więc wynik jest taki sam jak początkowa lista.


I chciałbym umieścić validData.length / 2część na zewnątrz pętli for.
Jin Kwon

7
@Jin, nie chciałbym. To tylko zaciemnia znaczenie i założę się, że kompilator optymalizacyjny i tak by to zrobił. Niezależnie od tego nie ma sensu mikrooptymalizacja, dopóki nie uzyskasz wyraźnych dowodów z profilowania, że ​​jest to konieczne / pomocne.
Nicu Stiurca,

9
@ JinKwon To byłoby trochę jak robienie validData.length >> 1. Jest to równoważne i szybsze, ale dezorientuje wielu programistów i każdy dobry kompilator zrobi to automatycznie.
Justin

2
Powinieneś wykonać to obliczenie tylko raz validData.length - i - 1i zapisać je w zmiennej.

Czy ktoś może zasugerować odwrócenie bez zmiennej temp !!
sg28

303

Dzięki Commons.Lang możesz po prostu użyć

ArrayUtils.reverse(int[] array)

W większości przypadków szybsze i bezpieczniejsze jest trzymanie się łatwo dostępnych bibliotek, które są już testowane jednostkowo i testowane przez użytkownika, gdy zajmują się Twoim problemem.


3
Wolałbym, żeby zwrócił odwróconą (przekazaną) tablicę dla stylu funkcjonalnego.
Laurent G

2
@ laurent-g, żeby być uczciwym: odwrócenie tablicy w ten sposób jest bardziej wydajne pod względem pamięci, i prawdopodobnie dlatego zrobili to w ten sposób.
Sirmyself

4
Nie chodziło mi o kopię ani o kopię. Moja wiadomość stwierdza, że ​​„(przekazany)” ma zostać zwrócony (po odwróceniu), więc może zostać przekazany w wyrażeniu, nie wymagającym osobnej instrukcji.
Laurent G

52
public class ArrayHandle {
    public static Object[] reverse(Object[] arr) {
        List<Object> list = Arrays.asList(arr);
        Collections.reverse(list);
        return list.toArray();
    }
}

11
Oczywiście, tak będzie. Lista może zawierać tylko obiekty, a nie prymitywy, więc wszystkie prymitywy ( intw tym przypadku) są zawijane w odpowiednie opakowania ( Integerw tym przypadku) i umieszczane na liście. Widzisz, Integers są obiektami. @Tom
11684,

6
Uwaga: jeśli się nie mylę, oryginalna tablica jest modyfikowana. Aby to wyjaśnić, możesz po prostu niczego nie zwracać.
Andrea Zilio

3
@ 11684 Tak, listy ogólne mogą zawierać tylko obiekty. Ale metoda nie obejmuje tablicy. Tablice mogą zawierać prymitywy. Dlatego int[]różni się od Integer[]. Wypróbuj: Integer[] array = new int[5]. Otrzymasz błąd kompilacji. Dlatego Arraysklasa Java definiuje wiele metod pracy z pierwotnymi tablicami. Próba przekazania int[]do powyższej metody da w wyniku coś takiego The method reverse(Object[]) in the type MakeSimple is not applicable for the arguments (int[]). @Filip - algorytm lokalny zużywa mniej pamięci i działa szybciej.
Brian McCutchon

3
@Andrea W rzeczywistości tak nie jest. Lista zwrócona przez Arrays.asList()nie odwołuje się do oryginalnej tablicy, a tablica nie jest zwracana. To jeden z problemów związanych z tą metodą: wykorzystuje potrójną pamięć i potroi pracę jako algorytm lokalny.
Brian McCutchon

4
Ta metoda może działać, ale po prostu nie można przekazać jej int[]argumentu jako argumentu ( „typy niezgodne: int [] nie mogą zostać przekonwertowane na Object []” ).
MC Emperor,

47
Collections.reverse(Arrays.asList(yourArray));

java.util.Collections.reverse() może odwrócić java.util.List s i java.util.Arrays.asList()zwraca listę, która otacza określoną tablicę, którą mu przekazujesz, dlatego yourArrayjest odwrócona po wywołaniu Collections.reverse().

Koszt to tylko utworzenie jednego obiektu listy i nie są wymagane żadne dodatkowe biblioteki.

Podobne rozwiązanie zostało przedstawione w odpowiedzi Tarika i ich komentatorów, ale myślę, że ta odpowiedź byłaby bardziej zwięzła i łatwiejsza do przeanalizowania.


15
W przypadku tablic obiektów jest to dobre rozwiązanie. Ale to nie działa na tablice prymitywów. Np. przekazanie int[]doasList(...) nie zwróci a List<Integer>, ale a List<int[]>, zawierającego jeden element. AFAICS nie ma prostego, wbudowanego sposobu konwersji int[]an Integer[].
Martin Rust

4
To nie będzie działać z prymitywnymi tablicami ... kolekcje nie zwracają wartości, więc teraz masz niepotrzebną tablicę jako listę w pamięci
NightSkyCode

@MartinRust Java 8+: Arrays.stream(arr).boxed().collect(Collectors.toList())lubArrays.stream(arr).boxed().toArray(Integer[]::new)
Simon Forsberg

39

Myślę, że nieco łatwiej jest podążać za logiką algorytmu, jeśli deklarujesz zmienne jawne, aby śledzić indeksy, które zamieniasz przy każdej iteracji pętli.

public static void reverse(int[] data) {
    for (int left = 0, right = data.length - 1; left < right; left++, right--) {
        // swap the values at the left and right indices
        int temp = data[left];
        data[left]  = data[right];
        data[right] = temp;
    }
}

Myślę też, że łatwiej jest to zrobić w pętli while.

public static void reverse(int[] data) {
    int left = 0;
    int right = data.length - 1;

    while( left < right ) {
        // swap the values at the left and right indices
        int temp = data[left];
        data[left] = data[right];
        data[right] = temp;

        // move the left and right index pointers in toward the center
        left++;
        right--;
    }
}

old school swap wygląda na łatwiejszy, ale tak, jeśli uwzględni się wartości indeksu tablicowego w lewo, w prawo, ... będzie pomocne przy debugowaniu, jeśli w ogóle
Srinath Ganesh

Możesz także dodać „public static void swap (int [] data, int index1, int index2) {...}” i użyć tego z „reverse” w następujący sposób: swap (data, left, right).
pm_

13

Jest tu już wiele odpowiedzi, głównie skoncentrowanych na modyfikacji tablicy w miejscu. Ale ze względu na kompletność, oto inne podejście wykorzystujące strumienie Java do zachowania oryginalnej tablicy i utworzenia nowej tablicy odwróconej:

    int[] a = {8, 6, 7, 5, 3, 0, 9};
    int[] b = IntStream.rangeClosed(1, a.length).map(i -> a[a.length-i]).toArray();

10

Z Guava:

Collections.reverse(Ints.asList(array));

4
To jest genialne! Krótki i skuteczny. Podobnie jak wszystkie asListmetody, tworzy widok, który zapisuje bezpośrednio do podkładowej (pierwotnej) tablicy. Wydaje mi się, że głosujący w wyborach wyborczych omyłkowo pomyślał, że to zwróciło listę pudełkową lub coś takiego.
Luke Usherwood

@LukeUsherwood przypuszczalnie nadal będzie pewne obciążenie związane z boksem i rozpakowaniem podczas wywoływania get i set dla każdego elementu. Ale zgadzam się z tobą, że jest to genialne rozwiązanie.
Patrick Parker

Rzeczywiście, warto o tym wiedzieć. Nie sądzę, żeby byłaby to wielka sprawa w większości kodu, z którym osobiście pracuję - nasze „gorące” obszary są dobrze zdefiniowane, reszta to rodzaj „kodu kleju”. Jednocześnie jestem świadomy, że rezygnacja z pamięci powoduje również dodatkowy „ukryty” koszt, którego profilerzy nie przypisują rzeczywistej funkcji.
Luke Usherwood

@LukeUsherwood nadal zwraca listę pudełkową zamiast tablicy podstawowej
AnthonyJClink

2
@AnthonyJClink Nie jestem pewien, do czego to się odnosi, ale narzędzie JDK Collections.reversejest nieważną metodą. Działa to w miejscu na wewnętrznej klasie Guava, która otacza int[](Ponieważ nigdy nie przechowuje listy pudełek Integer, nie nazwałbym tej klasy „listą pudełkową”, a raczej „Widok listy tablicy”). Ale tak, działa poprzez interfejs przekazujący Integerobiekty, więc spowodowałoby to wiele tymczasowych rezygnacji i boksowania obiektów, jak wspomniano. Wypróbuj IntStreambibliotekę lub prymitywną bibliotekę, w której liczy się wydajność. (Trove, Koloboke, Eclipse Collections, ...)
Luke Usherwood,

10

W przypadku Java 8 możemy również użyć IntStreamdo odwrócenia tablicy liczb całkowitych, takich jak:

int[] sample = new int[]{1,2,3,4,5};
int size = sample.length;
int[] reverseSample = IntStream.range(0,size).map(i -> sample[size-i-1])
                      .toArray(); //Output: [5, 4, 3, 2, 1]

7

Prosty w pętli!

for (int start = 0, end = array.length - 1; start <= end; start++, end--) {
    int aux = array[start];
    array[start]=array[end];
    array[end]=aux;
}

4
W przyszłości poinformuj pytającego, co zrobili niepoprawnie i co zrobiłeś poprawnie.
Kartik Chugh

1
zmień start <= endnastart < end
Leonard Pauli

5

To ci pomoże

int a[] = {1,2,3,4,5};
for (int k = 0; k < a.length/2; k++) {
    int temp = a[k];
    a[k] = a[a.length-(1+k)];
    a[a.length-(1+k)] = temp;
}

5
for(int i=validData.length-1; i>=0; i--){
  System.out.println(validData[i]);
 }

Niestety, jest to najczystsza dostępna odpowiedź tutaj, ponieważ każdy programista będzie wiedział, jak to zrobić i nie wymaga żadnych rozszerzonych instalacji pakietów.
HoldOffHunger

5

Tak osobiście bym to rozwiązał. Powodem stworzenia sparametryzowanej metody jest umożliwienie sortowania dowolnej tablicy ... nie tylko liczb całkowitych.

Mam nadzieję, że coś z tego wyciągniesz.

@Test
public void reverseTest(){
   Integer[] ints = { 1, 2, 3, 4 };
   Integer[] reversedInts = reverse(ints);

   assert ints[0].equals(reversedInts[3]);
   assert ints[1].equals(reversedInts[2]);
   assert ints[2].equals(reversedInts[1]);
   assert ints[3].equals(reversedInts[0]);

   reverseInPlace(reversedInts);
   assert ints[0].equals(reversedInts[0]);
}

@SuppressWarnings("unchecked")
private static <T> T[] reverse(T[] array) {
    if (array == null) {
        return (T[]) new ArrayList<T>().toArray();
    }
    List<T> copyOfArray = Arrays.asList(Arrays.copyOf(array, array.length));
    Collections.reverse(copyOfArray);
    return copyOfArray.toArray(array);
}

private static <T> T[] reverseInPlace(T[] array) {
    if(array == null) {
        // didn't want two unchecked suppressions
        return reverse(array);
    }

    Collections.reverse(Arrays.asList(array));
    return array;
}

2
Nie rozwiązuje oryginalnego problemu przy użyciu naczelnych.
Melinda Green

Istnieje wiele sposobów konwersji prymów na obiekty. Zawsze zalecam unikanie kotów prymaskich, gdy tylko jest to możliwe w java i uważam, że należy je zachęcać.
AnthonyJClink

Przekształcanie tablicy prymitywów o nieznanej długości w tablicę może być bardzo złym pomysłem, zwłaszcza jeśli jest wykonywane bez uświadomienia sobie tego. Java to nie Smalltalk. Prymitywy są częścią języka i mają swoje miejsce. Nie ma znaczenia, że ​​ich nie lubimy, musimy je zaakceptować i używać w razie potrzeby.
Melinda Green

1
Właściwie nie musisz kopiować tablicy Collections.reverse(asList(arraytoReverse)); return arrayToReverse;. asListjest tylko otoczką tablicy, więc oryginalna tablica jest odwrócona.
Radiodef,

3

Twój program będzie działał tylko length = 0, 1. Możesz spróbować :

int i = 0, j = validData.length-1 ; 
while(i < j)
{
     swap(validData, i++, j--);  // code for swap not shown, but easy enough
}

3
Być może miałeś na myśli zamianę jako pseudo-kod dla zamiany wbudowanej zamiast wywołania metody, ale jeśli nie, to nie zadziała. Java przechodzi przez referencję, więc nie można napisać metody wymiany zmiennych.
Dean Povey

Miałem na myśli jakikolwiek sposób na zamianę v [i] i v [j]. Wiem, jak wywołania metod działają w java. Dla metody możesz zrobić coś takiego jak zamiana (v, i ++, j--);
fastcodejava

1
Dziekan, tablica validData jest obiektem przekazywanym przez referencję, więc metoda swap () będzie działać idealnie.
Gaël Oberson

3

Jeśli pracujesz z danymi, które są bardziej prymitywne (np. Char, bajt, int itp.), Możesz wykonać zabawne operacje XOR.

public static void reverseArray4(int[] array) {
    int len = array.length;
    for (int i = 0; i < len/2; i++) {
        array[i] = array[i] ^ array[len - i  - 1];
        array[len - i  - 1] = array[i] ^ array[len - i  - 1];
        array[i] = array[i] ^ array[len - i  - 1];
    }
}

1
Zbyt słodki, by go używać w kodzie produkcyjnym, ale i tak jest zabawny. Aby uzyskać maksymalną ostrość, użyj operacji% = w następujący sposób: array [i]% = array [len - i - 1] itp.
Melinda Green

Podobne, ale nieco krótsze:for (int m = x.length, i = --m / 2; ++i <= m;) { x[i] ^= x[m - i]; x[i] ^= x[m - i] ^= x[i]; }
Thomas Mueller

2

Najbardziej wydajne jest po prostu iterowanie tablicy do tyłu.

Nie jestem pewien, czy rozwiązanie Aarona to to połączenie. Collections.reverse(list);Czy ktoś wie?


Iteracja wstecz po tablicy wymaga nowej tablicy. Podoba mi się powyższe rozwiązanie, które wykonuje wbudowane odwracanie bez tworzenia nowej tablicy.
mmcdole

1
@Simucal po co tworzyć nową tablicę? Po prostu powtórz to do tyłu.
Trejkaz

2
public void getDSCSort(int[] data){
        for (int left = 0, right = data.length - 1; left < right; left++, right--){
            // swap the values at the left and right indices
            int temp = data[left];
            data[left]  = data[right];
            data[right] = temp;
        }
    }

1
public void display(){
  String x[]=new String [5];
  for(int i = 4 ; i > = 0 ; i-- ){//runs backwards

    //i is the nums running backwards therefore its printing from       
    //highest element to the lowest(ie the back of the array to the front) as i decrements

    System.out.println(x[i]);
  }
}

1
tak, próbowałem tego samego i czystego kodu wraz z danymi wyjściowymi int [] a = {1,3,5,2,6,7}; for (int i = a.length-1; i> = 0; i--) {System.out.print (a [i] + "");} `odwróci tablicę od ostatniego indeksu do pierwszego indeksu
Rocket_03,

1

Czy zrobienie tego w ten sposób nie byłoby znacznie bardziej prawdopodobne w przypadku błędów?

    int[] intArray = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    int[] temp = new int[intArray.length];
    for(int i = intArray.length - 1; i > -1; i --){
            temp[intArray.length - i -1] = intArray[i];
    }
    intArray = temp;

1

Rozwiązanie o złożoności czasowej o (n) i złożoności przestrzennej o (1).

void reverse(int[] array) {
    int start = 0;
    int end = array.length - 1;
    while (start < end) {
        int temp = array[start];
        array[start] = array[end];
        array[end] = temp;
        start++;
        end--;
    }
}

Wystarczy FYI, to można uprościć do kompleksu dla pętli: for (int start = 0, end = array.length - 1; start < end; start++, end--) { ... }.
Tim Cooke

1

2 sposoby odwrócenia tablicy.

  1. Używając pętli For i zamieniaj elementy do punktu środkowego ze złożonością czasową O (n / 2).

    private static void reverseArray() {
    int[] array = new int[] { 1, 2, 3, 4, 5, 6 };
    
    for (int i = 0; i < array.length / 2; i++) {
        int temp = array[i];
        int index = array.length - i - 1;
        array[i] = array[index];
        array[index] = temp;
    }
    System.out.println(Arrays.toString(array));

    }

  2. Korzystanie z wbudowanej funkcji (Collections.reverse ())

    private static void reverseArrayUsingBuiltInFun() {
    int[] array = new int[] { 1, 2, 3, 4, 5, 6 };
    
    Collections.reverse(Ints.asList(array));
    System.out.println(Arrays.toString(array));

    }

    Wyjście: [6, 5, 4, 3, 2, 1]


3
Co to jest Ints?
CodingNow

@CodingNow to jedna z klas pomocniczych narzędzi Guava - patrz tutaj
mrec

1
    public static void main(String args[])    {
        int [] arr = {10, 20, 30, 40, 50}; 
        reverse(arr, arr.length);
    }

    private static void reverse(int[] arr,    int length)    {

        for(int i=length;i>0;i--)    { 
            System.out.println(arr[i-1]); 
        }
    }

1

Istnieje kilka świetnych odpowiedzi powyżej, ale tak to zrobiłem:

public static int[] test(int[] arr) {

    int[] output = arr.clone();
    for (int i = arr.length - 1; i > -1; i--) {
        output[i] = arr[arr.length - i - 1];
    }
    return output;
}

0

poniżej znajduje się kompletny program do uruchomienia na twoim komputerze.

public class ReverseArray {
    public static void main(String[] args) {
        int arr[] = new int[] { 10,20,30,50,70 };
        System.out.println("reversing an array:");
        for(int i = 0; i < arr.length / 2; i++){
            int temp = arr[i];
            arr[i] = arr[arr.length - i - 1];
            arr[arr.length - i - 1] = temp;
        }
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }   
    }
}

Dla programów wykorzystujących tablice na macierzy będzie to dobre źródło. Przejdź przez link.


0

Korzystanie z rozwiązania XOR w celu uniknięcia zmiennej temp powinien wyglądać kod

for(int i = 0; i < validData.length; i++){
    validData[i] = validData[i] ^ validData[validData.length - i - 1];
    validData[validData.length - i - 1] = validData[i] ^ validData[validData.length - i - 1];
    validData[i] = validData[i] ^ validData[validData.length - i - 1];
}

Zobacz ten link, aby uzyskać lepsze wyjaśnienie:

http://betterexplained.com/articles/swap-two-variables-using-xor/


0
private static int[] reverse(int[] array){
    int[] reversedArray = new int[array.length];
    for(int i = 0; i < array.length; i++){
        reversedArray[i] = array[array.length - i - 1];
    }
    return reversedArray;
} 

4
Rozważ dodanie wyjaśnienia do swojej odpowiedzi. Odpowiedzi tylko w kodzie nic nie wyjaśniają.
rgettman,

0

Oto prosta implementacja odwracania tablicy dowolnego typu oraz pełna / częściowa obsługa.

import java.util.logging.Logger;

public final class ArrayReverser {
 private static final Logger LOGGER = Logger.getLogger(ArrayReverser.class.getName());

 private ArrayReverser () {

 }

 public static <T> void reverse(T[] seed) {
    reverse(seed, 0, seed.length);
 }

 public static <T> void reverse(T[] seed, int startIndexInclusive, int endIndexExclusive) {
    if (seed == null || seed.length == 0) {
        LOGGER.warning("Nothing to rotate");
    }
    int start = startIndexInclusive < 0 ? 0 : startIndexInclusive;
    int end = Math.min(seed.length, endIndexExclusive) - 1;
    while (start < end) {
        swap(seed, start, end);
        start++;
        end--;
    }
}

 private static <T> void swap(T[] seed, int start, int end) {
    T temp =  seed[start];
    seed[start] = seed[end];
    seed[end] = temp;
 }  

}

Oto odpowiedni test jednostkowy

import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;

import org.junit.Before;
import org.junit.Test;

public class ArrayReverserTest {
private Integer[] seed;

@Before
public void doBeforeEachTestCase() {
    this.seed = new Integer[]{1,2,3,4,5,6,7,8};
}

@Test
public void wholeArrayReverse() {
    ArrayReverser.<Integer>reverse(seed);
    assertThat(seed[0], is(8));
}

 @Test
 public void partialArrayReverse() {
    ArrayReverser.<Integer>reverse(seed, 1, 5);
    assertThat(seed[1], is(5));
 }
}

0

Oto, co wymyśliłem:

// solution 1 - boiler plated 
Integer[] original = {100, 200, 300, 400};
Integer[] reverse = new Integer[original.length];

int lastIdx = original.length -1;
int startIdx = 0;

for (int endIdx = lastIdx; endIdx >= 0; endIdx--, startIdx++)
   reverse[startIdx] = original[endIdx];

System.out.printf("reverse form: %s", Arrays.toString(reverse));

// solution 2 - abstracted 
// convert to list then use Collections static reverse()
List<Integer> l = Arrays.asList(original);
Collections.reverse(l);
System.out.printf("reverse form: %s", l);

0

Istnieją dwa sposoby rozwiązania problemu:

1. Odwróć tablicę w przestrzeni.

Krok 1. Zamień elementy na początku i na końcu indeksu.

Krok 2. Zwiększ indeks początkowy, zmniejsz indeks końcowy.

Krok 3. Powtarzaj krok 1 i krok 2, aż do początku indeksu <koniec indeksu

W tym celu złożoność czasu wyniesie O (n), a złożoność przestrzeni wyniesie O (1)

Przykładowy kod do odwrócenia tablicy w przestrzeni wygląda następująco:

public static int[] reverseAnArrayInSpace(int[] array) {
    int startIndex = 0;
    int endIndex = array.length - 1;
    while(startIndex < endIndex) {
        int temp = array[endIndex];
        array[endIndex] = array[startIndex];
        array[startIndex] = temp;
        startIndex++;
        endIndex--;
    }
    return array;
}

2. Odwróć tablicę za pomocą tablicy pomocniczej.

Krok 1. Utwórz nową tablicę o rozmiarze równym podanej tablicy.

Krok 2. Wstaw elementy do nowej tablicy, zaczynając od indeksu początkowego, od podanej tablicy, zaczynając od indeksu końcowego.

W tym celu złożoność czasu będzie wynosić O (n), a złożoność przestrzeni będzie wynosić O (n)

Przykładowy kod do odwracania tablicy za pomocą tablicy pomocniczej wygląda następująco:

public static int[] reverseAnArrayWithAuxiliaryArray(int[] array) {
    int[] reversedArray = new int[array.length];
    for(int index = 0; index < array.length; index++) {
        reversedArray[index] = array[array.length - index -1]; 
    }
    return reversedArray;
}

W tym celu możemy również użyć interfejsu API kolekcji Java.

Interfejs API kolekcji korzysta wewnętrznie z tego samego podejścia odwrotnego w przestrzeni.

Przykładowy kod do korzystania z interfejsu API kolekcji wygląda następująco:

public static Integer[] reverseAnArrayWithCollections(Integer[] array) {
    List<Integer> arrayList = Arrays.asList(array);
    Collections.reverse(arrayList);
    return arrayList.toArray(array);
}

0
static int[] reverseArray(int[] a) {
     int ret[] = new int[a.length];
     for(int i=0, j=a.length-1; i<a.length && j>=0; i++, j--)
         ret[i] = a[j];
     return ret;
}

0
 public static int[] reverse(int[] array) {

    int j = array.length-1;
    // swap the values at the left and right indices //////
        for(int i=0; i<=j; i++)
        {
             int temp = array[i];
                array[i] = array[j];
                array[j] = temp;
           j--;
        }

         return array;
    }

      public static void main(String []args){
        int[] data = {1,2,3,4,5,6,7,8,9};
        reverse(data);

    }
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.