问题描述
输入一数组,返回倒置数组。
代码
public static int[] reverse(int[] x) {
int i = 0,temp;
while(true) {
temp = x[i];
x[i] = x[x.length-1-i];
x[x.length-1-i] = temp;
i++;
if(i>=x.length-1-i)
//if(i>x.length/2)
break;
}
return x;
}
分析代码
我们需要的是将数组倒置的结果,都要使用数组值的交换,重点是什么时候停止循环,上面的代码有两种停止方式,一个是i>x.length/2,一个是i>=x.length-1-i,它们的结果都是对的,但它们的不同在于前者在数组长度为单数时,在最中间多了一次循环,也就是自己和自己交换了一次,而后者则没有。