黑马程序员技术交流社区

标题: 位置置换的问题 [打印本页]

作者: 刘俊佳    时间: 2012-8-19 10:23
标题: 位置置换的问题
关于毕老师Java基础视频教程第04天-06-数组(排序-位置置换功能抽取)的视频里说到这样一段代码,在程序中是怎样体现完成位置置换的呢?:
public static void swap(int[] arr,int a,int b)
        {
               
                int temp=arr[a];
                arr[a]=arr[b];
                arr[b]=temp;
        }
作者: 黑马-郑鹏    时间: 2012-8-19 11:07
假设你定义了一个数组
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,这样就实现了代码的调换
作者: 王宝龙    时间: 2012-8-19 12:33
  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>
复制代码

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

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


作者: 刘俊佳    时间: 2012-8-29 08:39
谢谢楼上各位的解答   问题已解决




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