Java中如何反转int数组?

295

我正在尝试在Java中反转一个int数组。

该方法无法反转数组。

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;
}

它有什么问题?


39
我明白我哪里做错了。应该是validData.length/2才对。否则它会反转然后再次反转回来。 - MichaelScott
4
请参阅 http://en.wikipedia.org/wiki/In-place_algorithm,其中包含该算法的正确版本描述。 - Dean Povey
Java 8: https://dev59.com/KnI95IYBdhLWcg3w1BhN#46756353 - akhil_mittal
48个回答

-1

这是一个简单而快速的解决方案。希望它能帮到你!

public int[] reverse(int[] arr) {
    for(int i = arr.length; i > 0 ; i--){
        System.out.print(arr[i-1] + " ");
    }
    return arr;
}

3
它不会返回反转后的数组! - InziKhan

-1

反转数组的另一种方法

public static int []reversing(int[] array){
    int arraysize = array.length;
    int[] reverse = new int [arraysize+1];
    for(int i=1; i <= arraysize ; i++){
        int dec= arraysize -i;
        reverse[i] = array[dec];
    }
    return reverse;
}

-1

简单的方法:

    for(int i=queue.length-1;i>=0;i--){
                System.out.print(queue[i] + "  ");
    }

-1

enter image description here

小菜一碟。 我对字符串也做过,没什么区别。


-1

由于我想保持原始数组不变,因此我以下列方式解决了这个问题:

List<Integer> normalArray= new ArrayList<>();
List<Integer> reversedArray = new ArrayList<>();

// Fill up array here

for (int i = 1; i <= normalArray.size(); i++) {
  reversedArray .add(normalArray.get(normalArray.size()-i));
}

基本上,循环遍历初始数组并将所有值以相反的顺序添加到新的(反转的)数组中。列表的类型可以是任何类型。 我多次通过这段代码进行工作,这导致其他解决方案无法正常工作。


3
那不是一个数组。 - Patrick Parker

-2

您可以使用这个

public final class ReverseComparator<T extends Comparable<T>> implements  Comparator<T> {
  @Override
  public int compare(T o1, T o2) {      
    return o2.compareTo(o1);
  }
}

一个简单的

Integer[] a = {1,6,23,4,6,8,2}
Arrays.sort(a, new ReverseComparator<Integer>());

从Java 1.7+开始更加简单'code' Integer[] a = new Integer[]{1,6,23,4,6,8,2} Arrays.sort(a, java.util.Collections.reverseOrder()); - FrederikH

-2
尝试这段代码:
    int arr[] = new int[]{1,2,3,4,5,6,7};
    for(int i=0;i<arr.length/2;i++){
        int temp = arr[i];
        arr[i] = arr[(arr.length-1)-i];
        arr[(arr.length-1)-i] = temp;
     }
     System.out.println(Arrays.toString(arr));

-6
int[] arrTwo = {5, 8, 18, 6, 20, 50, 6};

    for (int i = arrTwo.length-1; i > 0; i--)
    {
        System.out.print(arrTwo[i] + " ");
    }

5
它不会颠倒当前数组,只会按相反的顺序打印数组。 - Abhishekkumar
3
@Abhishekkumar,它甚至不会做到这一点(i > 0)。 - ChiefTwoPencils

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接