首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Java中反转数组

在Java中反转数组
EN

Stack Overflow用户
提问于 2012-11-20 09:40:29
回答 4查看 18K关注 0票数 1

我尝试用两种方法反转数组:

1)通过创建一个非常简单的新数组:

代码语言:javascript
复制
public static int[] reverse(int[] array) {
    int[] reverseArray = new int[array.length];
    for(int i = 0; i < reverseArray.length; i++) {
        reverseArray[i] = array[array.length - i - 1];
    }
    return reverseArray;
}

2)第二种方法我得到了答案,但实际上我不太理解它,它实际上利用了交换,将数组的值赋给一个临时变量,然后将其更改并返回给原始变量:

代码语言:javascript
复制
public static int[] reverse2(int[] array)
{
    for (int i=0; i < array.length / 2; i++)
    {   
        int temp = array[i];
        array[i] = array[array.length - i - 1];
        array[array.length - i - 1] = temp;
    }
    return array;
}

有人能给我解释一下第二个代码吗?我不明白2的除法吗?如果数组大小是偶数或奇数,会发生什么?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-11-20 09:43:18

除以2仅仅是为了让您只遍历数组的前半部分。如果您交换了第一项和最后一项,那么当我到达array.length时,您就不想再这样做了。如果大小是偶数,它将在下半场之前停止,如果大小是奇数,它将在中心位置之前停止,而中心位置无论如何都不需要切换。希望这能有所帮助!

票数 9
EN

Stack Overflow用户

发布于 2012-11-20 09:45:36

除以2仅仅意味着您不必遍历数组中的所有元素。由于您要反转数组,而循环位于第一个元素,这意味着它应该只与另一端的第一个元素交换。

基本上除以2只是为了减少循环的通过次数。可以将其视为性能增强。

无论数组中元素的数量是奇数还是偶数,循环仍然工作得很好。如果元素数为奇数,循环将在中间元素之前停止。

票数 2
EN

Stack Overflow用户

发布于 2012-11-20 09:44:18

数组被除以2,因为您将交换位置0和n,1和n-1,等等。如果数组的值是奇数,则最后一个值应该直接位于数组的中心,不需要交换。我们可以循环数组大小除以n,因为只需要进行n/2的交换。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13465385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档