A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xiaoziyk 中级黑马   /  2015-10-31 23:10  /  483 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

关于一维数组的数值交换,如arr[0]和arr[4]交换,arr[1]和arr[3]交换. 能不能帮忙写个代码讲解一下,不是很明白

5 个回复

倒序浏览
应该是换角标下的值吧?   可以用if 尝试调换
回复 使用道具 举报
数值交换一般定义第三方变量来完成互换
int a = 4;
int b = 8;
互换代码如下
int temp = a;//先把a的值存入第三方变量
a = b;//然后把b的值给a,虽然值覆盖了原来的值,但是已经提前把a的值存入了第三方变量
b = temp;//在把以前a的值给b
这样就互换了

你说的数组和这个是样的,把代码套进去就行了嘛
回复 使用道具 举报 1 0
以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]);
   }
}

回复 使用道具 举报
我个人喜欢用这个方法,可以不用开辟新空间而完成交换
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]
交换完成
回复 使用道具 举报
temp=arr[0]
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马