反转数组中的元素

时间:2018-10-17 07:36:57

标签: java arrays sorting element

我一直在寻找一个for循环,该循环可以反转数组中的元素,但是我不太了解其中发生了什么。这是代码:

 int middleIndex = (array.length) / 2;

    for (int i = 0; i < middleIndex; i++) {
        int temporaryVariable = array[i];
        array[i] = array[array.length - 1 - i];
        array[array.length - 1 - i] = temporaryVariable;
    }

int secondaryVariable = array [i]下面的两行到底是做什么的?究竟如何反转元素?

5 个答案:

答案 0 :(得分:1)

通过将first交换为last元素,将second交换为second_last等,它有效地反转了数组的元素。这样,操作数为{{1 }}。

答案 1 :(得分:1)

int temporaryVariable = array[i];之后的两行只是将第i个元素与最后一个元素中的第i个交换,我们将此循环运行一半的时间作为数组中元素的数量。

答案 2 :(得分:0)

此算法正在对存储在数组中的交换值进行N / 2次迭代。它从数组的开头(索引0)开始,一直到其一半(索引N / 2)。它将第一个元素(索引为0)与最后一个元素(索引为N-1-0)交换,然后将第二个元素(索引为0 + 1)与最后一个元素(索引为N-1-(0 + 1)交换)),等等。

答案 3 :(得分:0)

首先请记住,数组索引从0开始。 因此,最后一个元素的索引为array.length - 1

这3行将第一个项目与最后一个项目交换,然后将第二个项目与第2个从末尾交换,依此类推。temporaryVariable用作存储以下值之一的临时位置:交换,这样它在被其他值覆盖时不会丢失。

  1. i处获取值的副本:

    int temporaryVariable = array[i];

  2. 从数组(i)的末尾插入项array.length - 1 - i,而不是它。

    array[i] = array[array.length - 1 - i];

  3. 将临时存储的项目i从末尾(i插入array.length - 1 - i

    array[array.length - 1 - i] = temporaryVariable;

i到达数组的中间时,循环停止。 (如果数组中的元素数量为奇数,则中间的元素将停留在原位置。)

答案 4 :(得分:0)

另一部分是返回第二大数字,但是由于某种原因,它返回了第三大数字,这确实很奇怪。

这是代码:

public static int returnSecondBiggest(int[] array) {
int largestElement = array[0];
for (int i = 1; i < array.length; i++) {
    if (array[i] > largestElement) {
        largestElement = array[i];
    }
}

int secondBiggest = Integer.MIN_VALUE;
for (int i = 0; i < array.length; i++) {
    if (array[i] > secondBiggest && array[i] != largestElement) {
        secondBiggest = array[i];
    }
}

return secondBiggest;

}

当代码应返回第二个时,它如何返回第三个?我很迷路。