黑马程序员技术交流社区

标题: 关于数组内的数值交换 [打印本页]

作者: xiaoziyk    时间: 2015-10-31 23:10
标题: 关于数组内的数值交换
关于一维数组的数值交换,如arr[0]和arr[4]交换,arr[1]和arr[3]交换. 能不能帮忙写个代码讲解一下,不是很明白
作者: 迷茫不堪的年纪    时间: 2015-10-31 23:57
应该是换角标下的值吧?   可以用if 尝试调换
作者: 黑夜中那颗星    时间: 2015-11-1 00:29
数值交换一般定义第三方变量来完成互换
int a = 4;
int b = 8;
互换代码如下
int temp = a;//先把a的值存入第三方变量
a = b;//然后把b的值给a,虽然值覆盖了原来的值,但是已经提前把a的值存入了第三方变量
b = temp;//在把以前a的值给b
这样就互换了

你说的数组和这个是样的,把代码套进去就行了嘛
作者: 冯景超    时间: 2015-11-1 13:24
以arr[1],arr[3]调换为例

1.定义一个静态方法
class Array
{
     static void swap(int[] arr,int a,int b)//a,b就是要换值的元素角标
   {
       int temp;
       temp=arr[a];
       arr[a]=arr[b];
       arr[b]=temp;
   }
}
然后用类名调用该方法即可
class Demo
{
   public static  void main(String[] args)
   {   
        int[] arr={1,2,3,4,5}//定义一个数组
        Array.swap(arr,1,3);//类名调用函数
        System.out.println(arr[1]); //输出验证
        System.out.println(arr[3]);
   }
}


作者: momoxixi    时间: 2015-11-1 13:43
我个人喜欢用这个方法,可以不用开辟新空间而完成交换
arr[0] = arr[4]^arr[0];
arr[4] = arr[4]^arr[0];  //将arr[0]代入。arr[4] = arr[4]^arr[4]^arr[0] = arr[0]
arr[0] = arr[4]^arr[0]; //将arr[4] = arr[0],arr[0] = arr[4]^arr[0]代入得 arr[0] = arr[0]^arr[4]^arr[0]=arr[4]
交换完成

作者: zlg    时间: 2015-11-1 14:08
temp=arr[0]




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2