黑马程序员技术交流社区

标题: 求助:Java中数组元素排序的一个问题!!! [打印本页]

作者: Young66329    时间: 2016-9-10 14:31
标题: 求助:Java中数组元素排序的一个问题!!!
不知道为什么,输入下面的代码,数组中的元素压根没有动,求指教!!!想了半天就是不知道到底什么原因不排序!!!
class Test
{
        public static void main(String[] args)
        {
                int[] a=new int[]{1,2,4,3};
                for(int i=0;i<a.length;i++)
                {
                        for(int j=i+1;j<a.length;j++)
                        {
                                compare(a[i],a[j]);
                        }
                }
                for(int i=0;i<a.length;i++)
                {
                        System.out.println("a["+i+"]="+a[i]);
                }
        }
        public static void compare(int a,int b)
        {
                if(a>b)
                {
                        a=a^b;
                        b=a^b;
                        a=a^b;
                }
        }
}
作者: HMSK    时间: 2016-9-10 20:17
看你还是不会使用和定义方法,下面是我自己写的,请参考:

public class Test{
        public static void main(String[] args){
                int[] arr ={1,2,4,3,29,74,55,33,5};
                Compare(arr);
        }

        public static void Compare(int[] arr){
                                               
                for(int i=0;i<arr.length;i++){
                        int temp = arr[i];
                                                       
                        for(int j=i+1;j<arr.length;j++){                               
                                if(arr[i]>arr[j]){
                                        temp = arr[j];
                                        arr[j]=arr[i];
                                        arr[i]=temp;
                                }
                        }
                        System.out.println(temp);
                }
        }
}
作者: wuhsuai    时间: 2016-9-10 20:20
你的compare方法中可以使用第三方变量来进行存储
作者: NewBeeCoder    时间: 2016-9-10 20:31
是参数问题吧
你的方法只是 形参的交换 没有影响到实参数组的内容

作者: 水月灬清影    时间: 2016-9-10 20:36
你的问题是:基本类型形参的改变能影响实参么?想明白这个你就知道哪里错了。另外有小问题,一是格式,二是外层循环i<a.length-1
作者: Young66329    时间: 2016-9-11 14:32
水月灬清影 发表于 2016-9-10 20:36
你的问题是:基本类型形参的改变能影响实参么?想明白这个你就知道哪里错了。另外有小问题,一是格式,二是 ...

知道为什么了,谢谢指教!我的格式的话,个人还是比较喜欢对称的格式,这样也可以清晰的看出来哪里到哪里是一块,但是不知道以后工作了这样写可不可以,不可以的话得现在就改了.
作者: Young66329    时间: 2016-9-11 14:34
NewBeeCoder 发表于 2016-9-10 20:31
是参数问题吧
你的方法只是 形参的交换 没有影响到实参数组的内容
...

对的对的,问题就是处在这里,谢谢!
作者: 小菜白白白    时间: 2016-9-11 20:30
基本数据类型中的形参是不会影响到实参的
作者: 驰马定中原    时间: 2016-9-11 20:46
[size=18.018px]class Test
[size=18.018px]{
[size=18.018px]        public static void main(String[] args)
[size=18.018px]        { [size=18.018px]                int[] a = new int[] { 1, 2, 4, 3 };
                for (int i = 0; i < a.length; i++) {
                        for (int j = i + 1; j < a.length; j++) {
                                if (a > a[j]) {
                                        a = a ^ a[j];
                                        a[j] = a ^ a[j];
                                        a = a ^ a[j];
                                }
                        }
                }
                for (int i = 0; i < a.length; i++) {
                        System.out.println("a[" + i + "]=" + a);
                }
[size=18.018px]        }
[size=18.018px]}


作者: Young66329    时间: 2016-9-12 08:20
驰马定中原 发表于 2016-9-11 20:46
class Test
{
        public static void main(String[] args)

[size=18.018px]是什么意思?没看懂...
作者: 黑马豹仔    时间: 2016-9-12 08:53
学习学习
作者: NewBeeCoder    时间: 2016-9-12 09:58
Young66329 发表于 2016-9-11 14:34
对的对的,问题就是处在这里,谢谢!

没事 我也经常出这种问题
作者: 驰马定中原    时间: 2016-9-12 13:59
加油加油




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