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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 流沙 于 2014-5-16 10:13 编辑

下面的程序是从小到大的选择排序;


谁能只改变一个字母就让程序从大到小排序???????????????:Q

class ArrayTest2 //选择排序
{
        
        public static void selectSort(int[] arr)
        {
                //将数组遍历出来
                for(int x = 0;x<arr.length;x++)
                {
                        //将X角标的数与数组中的每一个数进行比较
                        //当y=0时最后一次比较是将最后一个数与数组中每一个数比较
                        //当y=x时 是角标为x的数  与之后 的每一个数进行比较;
                        for(int y = x;y<arr.length-1;y++)
                        {
                                if(arr[x]>arr[y])
                                       
                                {
                                       
                                        arr[x]=arr[x]^arr[y];
                                        arr[y]=arr[x]^arr[y];
                                        arr[x]=arr[x]^arr[y];
                                       
                                }
                        }
                        for(int z = 0;z<arr.length;z++)
                        {
                        System.out.print("  "+arr[z]);
                        }
                        System.out.println();
                        
                        
                }
                for(int x = 0;x<arr.length;x++)
                System.out.print(arr[x]);
        }


        public static void main(String[] args)
        {
                int[] arr = {5,1,6,7,3,9};
                selectSort(arr);
        }
}

12 个回复

倒序浏览
你从小到大 都实现了   只是在输出的时候有后面输出  就行了啊 就可相当于从大到小显示了
  for(int x = 0;x<arr.length;x++)
      System.out.print(arr[arr.length-x-1]);
回复 使用道具 举报
学习学习
回复 使用道具 举报
将 if(arr[x]>arr[y]) 改为 if(arr[x]<arr[y])不就好了。
回复 使用道具 举报
把控制条件if(arr[x]>arr[y])
改成if(arr[x]<arr[y])
友情提示:排序一般不要使用位运算,使用第三变量较好,避免溢出
回复 使用道具 举报
首先控制条件if(arr[x]>arr[y]),决定了这个数组之后大小的排序,现在这样是将小的往前放,如果将控制条件反过来,也就是将if(arr[x]<arr[y]),就成了如果前边小就换位置,如果前边是大的就不进入条件,这样以来就实现了最终将结果反过来由大到小排序了。
回复 使用道具 举报
流沙 中级黑马 2014-5-15 13:58:19
7#
没壳的蜗牛 发表于 2014-5-15 12:39
将 if(arr[x]>arr[y]) 改为 if(arr[x]

嘿嘿不想改变符号
回复 使用道具 举报
流沙 中级黑马 2014-5-15 13:59:49
8#
赵洋洋 发表于 2014-5-15 12:51
把控制条件if(arr[x]>arr[y])
改成if(arr[x]

我这个貌似不会溢出吧?
回复 使用道具 举报
流沙 中级黑马 2014-5-15 14:00:52
9#
观决 发表于 2014-5-15 10:51
你从小到大 都实现了   只是在输出的时候有后面输出  就行了啊 就可相当于从大到小显示了
  for(int x = 0; ...

嘿嘿,我是菜鸟,我蒙圈了!
回复 使用道具 举报
把          if(arr[x]>arr[y])
中的大于号改成小于号不是就行了吗???
回复 使用道具 举报
流沙 发表于 2014-5-15 13:59
我这个貌似不会溢出吧?

这个不会,小小的一点建议,,,
回复 使用道具 举报
我只是想改变一个字母就可以改变顺序!
回复 使用道具 举报
(有没有高手一个字都不改变就能让这个程序实现这个功能啊)?收我为徒吧:滚蛋:lol
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马