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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王桂丽 中级黑马   /  2012-8-30 23:21  /  1450 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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++)怎样执行还不是很清楚,请说明!

评分

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

查看全部评分

2 个回复

倒序浏览
for(int i=0;i<a.length/2;i++)
如果i的值小于位于数组中间位置的角标值(如果数组长度为奇数,则中间位置的值只有一个,不用交换,为偶数则交换),i自加1
将数组中第一位置的值与最后一个位置的值交换,
将数组中第二个位置的值与倒数第二个位置的值交换,
...
将数组中相对位置的值调换位置

评分

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

查看全部评分

回复 使用道具 举报
此问题已解决~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马