黑马程序员技术交流社区

标题: 麻烦各位学哥学姐帮忙给看看,我转不过这个弯 [打印本页]

作者: 徐传任    时间: 2012-9-12 11:05
标题: 麻烦各位学哥学姐帮忙给看看,我转不过这个弯
冒泡排序:
    public static void sort(int[] arr)
    {
        for(int x=0; x<arr.length-1; x++)
        {
            for(int y=0; y<arr.length-x-1; y++)
            {
                if(arr[y]>arr[y+1])
                {
                    //交换位置的这部分我想定义一个函数swap()
                   swap(arr[y],arr[y+1]);
                }
            }
        }
    }

    public static void swap(int a, int b)
    {
            int temp = a;
            a = b;
            b = a;
    }

我总是感觉是int型的数组,然后可以这样交换位置,这样是错误的,但是我还是不理解,总是转不过这个弯来,麻烦学哥学姐们给我讲一下


作者: 张 涛    时间: 2012-9-12 11:13
从内存角度分析去讲swap方法:

在swap方法中,两个参数a和b,作为传入参数,是在栈中的。然后你把a和b的值互换,方法结束,然后这个方法的参数都要出栈,a和b都出栈。

整个过程根本没涉及到数组,所以不对。
作者: 徐传任    时间: 2012-9-12 11:24
张 涛 发表于 2012-9-12 11:13
从内存角度分析去讲swap方法:

在swap方法中,两个参数a和b,作为传入参数,是在栈中的。然后你把a和b的值 ...

谢谢,明白了,哥们结合内存讲的很透彻,谢谢




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