黑马程序员技术交流社区

标题: 关于元素交换的一点问题 [打印本页]

作者: 王桂丽    时间: 2012-8-30 23:21
标题: 关于元素交换的一点问题
import java.util.Arrays;



public class SwapDemo
{



      public static void main(String[] args)
                  {

            int [] a = new int[]{//定义一个数组,每个元素赋0~999直接的随机数

                                    (int)(Math.random() * 1000),

                                    (int)(Math.random() * 1000),

                                    (int)(Math.random() * 1000),

                                    (int)(Math.random() * 1000),                                

                                    (int)(Math.random() * 1000)                                                                                                         

                                                            };   

            

            System.out.println(a);//打印对象a

            System.out.println(Arrays.toString(a));//打印原数组

                        //swap1(a);//调用方法1交换元素位置
            swap2(a);//调用方法2交换元素位置



            System.out.println(Arrays.toString(a));         

        }

      

      public static void swap1(int a[])
                  {

            int len = a.length;//定义len等于数组a的长度

            for(int i=0;i<len/2;i++)//通过循环遍历元素,并通过第三方变量来交换元素
                                {

                  int tmp = a;

                  a = a[len-1-i];

                  a[len-1-i] = tmp;
                                }

            }
         public static void swap2(int a[])
                 {

            int len = a.length;//定义len等于数组a的长度

            for(int i=0, j=len-1;i<j;i++,j--)//通过循环遍历元素,并通过第三方变量来交换元素
                                {

                  int tmp = a;

                  a = a[len-1-i];

                  a[len-1-i] = tmp;
                            }

      }


}


疑问:通过该例可以看出
for(int i=0,int j=a.length-1;i<j;i++,j--) 等效于 for(int i=0;i<a.length/2;i++),但是我对for(int i=0;i<a.length/2;i++)怎样执行还不是很清楚,请说明!

作者: 黑马张涛    时间: 2012-8-30 23:38
for(int i=0;i<a.length/2;i++)
如果i的值小于位于数组中间位置的角标值(如果数组长度为奇数,则中间位置的值只有一个,不用交换,为偶数则交换),i自加1
将数组中第一位置的值与最后一个位置的值交换,
将数组中第二个位置的值与倒数第二个位置的值交换,
...
将数组中相对位置的值调换位置
作者: 王桂丽    时间: 2012-8-30 23:42
此问题已解决~




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