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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 帅飞 中级黑马   /  2014-5-7 02:29  /  1049 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 帅飞 于 2014-5-7 03:01 编辑

//降序排列
        public static void arrjiang(int[] arr)
        {
       

                for ( int x=0;x<arr.length;x++ )      //   x<arr.length-1 , 结果是一样的,到底哪个更规范一些???
                {
                        for (int y=0;y<arr.length-x-1;y++ )
               
                 if (arr[y]<arr[y+1])
                        {
                       
                        arr[y]=arr[y]^arr[y+1];
                    arr[y+1]=arr[y]^arr[y+1];
                        arr[y]=arr[y]^arr[y+1];
                       
                        }
               
                }
        }

//升序排列
        public static void arrsheng(int [] arr)
        {
                for ( int x=0;x<arr.length;x++ )    //x<arr.length-1,结果是一样的,到底哪个更规范一些???
                {
                        for (int y=0;y<arr.length-x-1 ;y++ )
                        {
                                if (arr[y+1]<arr[y])
                                {       
                                int temp = arr[y];
                                arr[y ]= arr[y+1];
                                arr[y+1]= temp;               
                                }
                        }
                       
               
                }       
       
        }


       


        //打印当前内存中的数组
        public static void arrprint(int [] arr)
        {
                for (int x=0;x<arr.length ; x++)
                {
                System.out.print(arr[x]+"\t");
                }

        }
               
       




问题是:冒泡排序中,,关于   x<arr.length-1   还是   x<arr.length 好像结果都一样。。。

4 个回复

倒序浏览
结果虽然都一样,不过还是写arr.length-1吧,-1是为了避免一轮下来最后一个元素和自己比较,无意义,当然结果都是一样
回复 使用道具 举报
这个其实不是问题,不要太过于较真。虽然  x<arr.length 和x<arr.length-1  都能使代码完美运行,但是x<arr.length-1  运行的时候,要比 x<arr.length 更优化一些,因为数组中的最后一个元素没有必要跟自己再进行一次比较运算。以数组arr[2,6,9,8,4,5]为例,就按照楼主的冒泡排序为例,0角标和1角标比 ,1角标和2角标比,2角标和3角标比,3角标和4角标比,4角标和5角标比,但是最后一个5角标用跟自己再比一次吗?显然不需要,所以也就是循环要少运行一次,这样的代码更为优化一些。就这么一点区别而已。
回复 使用道具 举报
楼上的说的很对
回复 使用道具 举报
x<arr.length-1要好吧,多一次循环也只是浪费资源。其实 x<arr.length时,当x=arr.length-1进入到内层条件判断y<arr.length-x-1时,代入x后y<arr.length-(arr.length-1)-1,即y<0,所以也没意义啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马