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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘俊佳 中级黑马   /  2012-8-19 10:23  /  1841 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

关于毕老师Java基础视频教程第04天-06-数组(排序-位置置换功能抽取)的视频里说到这样一段代码,在程序中是怎样体现完成位置置换的呢?:
public static void swap(int[] arr,int a,int b)
        {
               
                int temp=arr[a];
                arr[a]=arr[b];
                arr[b]=temp;
        }

点评

同学,你都21分了,还在问这样的问题。。。。。。  发表于 2012-8-19 21:46

5 个回复

倒序浏览
假设你定义了一个数组
int[] arr = new int[]{12,23,13,25};
那么12对应的数组下标是0,22对应的数组下标是1,13对应的数组下标是2,25对应的数组下标是3
现在你想置换12和23的值,那么你调用swap函数就是
swap(arr,0,1);
也就是这时的a=0,b=1
那么swap中的代码就如下所示:
int temp=arr[0];
                arr[0]=arr[1];
                 arr[1]=temp;
这样运行后arr[0]=23,arr[1]=12,这样就实现了代码的调换
回复 使用道具 举报
  1. 在java中单纯的方法是不能起到叫唤的作用的要把方法放在类里面
  2. 代码如下:
  3. <p>class Change
  4. {
  5. public static void swap(int[] arr,int a,int b)
  6.          {
  7.                  
  8.                 int temp=arr[a];
  9.                  arr[a]=arr[b];
  10.                  arr[b]=temp;
  11.          }
  12. }
  13. public class  Demo_1
  14. {
  15. public static void main(String[] arge)
  16. {
  17.   int i;
  18.   int [] a = {8,5,3,4,7,9,0,1,2,6};
  19.   for(i=0;i<a.length;i++)
  20.   {
  21.     System.out.printf("%3d",a[i]);//先输出一次数组
  22.    
  23.   }
  24.   System.out.println();
  25.     Change.swap(a,0,1);//进行交换
  26.   for(i=0;i<a.length;i++)
  27.   {
  28.     System.out.printf("%3d",a[i]);//交换后输出
  29.    
  30.   }
  31.   
  32. }

  33. }
  34. 你可以看到第0个元素与第1个元素位置进行了交换!!</p>
复制代码

评分

参与人数 1技术分 +1 收起 理由
田建 + 1 鼓励一下!

查看全部评分

回复 使用道具 举报
简单的说,就是先准备一个容器,将第一数先存放在容器中,然后第二个数赋值给第一个变量,再把容器中的值赋值给第二个变量。
结合现实情况,想象一下,然后再理解程序,会比较容易一些。
希望能够帮到你。
回复 使用道具 举报
本帖最后由 贾林栋 于 2012-8-19 20:42 编辑

画了个图,希望楼主能明白
初始值        arr[a]=1      arr=2

评分

参与人数 1技术分 +1 收起 理由
田建 + 1 加油!

查看全部评分

回复 使用道具 举报
谢谢楼上各位的解答   问题已解决
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马