日期:2014-05-20  浏览次数:20681 次

数组中的反转小问题
[code=Java][/codeclass Array
{
public static void main(String []args)
{
int arr[]={1,2,3,4,5,6,7,8,9};
for (int x=0,y=arr.length-1;x<y ; x++,y--)
{
x=x^y;
y=x^y;
x=x^y;
}
for (int x=0;x<arr.length ;x++ )
{
System.out.print(arr[x]+",");
}
}
}
=============================================================
class Array
{  
  public static void main(String []args)  
  {  
  int arr[]={1,2,3,4,5,6,7,8,9};  
  for (int x=0,y=arr.length-1;x<y ; x++,y--)  
  {  
  arr[x]=arr[x]^arr[y];  
  arr[y]=arr[x]^arr[y];  
  arr[x]=arr[x]^arr[y];  
  }  
  for (int x=0;x<arr.length ;x++ )  
  {  
  System.out.print(arr[x]+",");  
  }  
  }  

小弟的问题是为什么第一种方法不行呢?把角标位互换再打印为嘛不行,是不是可以这么理解,我换不换,角标从左往右都是0开始的。 ]

------解决方案--------------------
起一个数组,存下标
int index[]=new int[arr.length];
for(int i= 0;i<arr.length;i++){
index[i] = arr.length - i-1;
}
for (int i=0;i<index.length ;i++ ){
System.out.print(arr[index[i]]+",");
}