如何反转数组? [复制]

Posted

技术标签:

【中文标题】如何反转数组? [复制]【英文标题】:How to reverse an array ? [duplicate] 【发布时间】:2013-01-11 07:17:30 【问题描述】:

我需要反转一个数组,例如将点 5 中的内容移动到 0、4 到 1、3 到 2。

            int size, length;

    System.out.print("how big of a list do you have: ");
    size=reader.nextInt();

    length=size-1;

    int [] array = new int [size];

    for (int count=0; count < array.length; count ++)
        System.out.println("enter a number: ");
        array [count] = reader.nextInt();
    
    for (int count=length; count > 0; count --)
    array [(length-count)];

我在 Eclipse 中执行此操作,并且在最后一行中不断收到错误消息,说我没有使用运算符/表达式:array [(length-count)]; 但我不知道为什么减号不起作用?或者如果我的程序可以正常运行,它并没有通过构建部分。

【问题讨论】:

【参考方案1】:
int temp = 0;
for (int i = 0; i < array.length / 2; i++)

    int temp = array[i];
    array[i] = array[array.length - i--];
    array[array.length - i--] = temp;

temp 用于避免数字相互覆盖。把它想象成从冰箱里取食物。牛奶在水后面,你想要一些牛奶。为了得到牛奶,你把水拿在手里(temp 就是手)。然后你把牛奶放在水所在的地方,水放在牛奶所在的地方。没有“手”,你就会失去水(掉在地板上,或者在 temp 的情况下,失去记忆),只剩下牛奶。

【讨论】:

感谢这行得通,但如果不是太多,请问有人可以解释这是如何工作的,以及 temp 的具体作用。【参考方案2】:

Array[(length-count)] 不起作用,因为它是一个值,和写一样

    0;

这不是对过程或操作的调用,因此是错误。

试试这个:

    int temp = 0 ;
    for(int start=0, end = numbers.length -1 ; start < end; start++, end--)
        //swap numbers
        temp = array[start];
        array[start] = array[end];
        array[end] = temp;
    

【讨论】:

以上是关于如何反转数组? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在java中反转字节数组? [复制]

有没有办法将用户输入存储在数组中并反转它? [复制]

如何就地反转 NumPy 数组?

数组的复制反转线性查找

Java小练习 数组的复制,反转及查找(线性,二分)

计算数组中的反转