黑马程序员技术交流社区

标题: 数组排序问题! [打印本页]

作者: hejinzhong    时间: 2014-7-9 18:18
标题: 数组排序问题!



当我在其他类中调用这个排序方法时候,返回结果不是正确的排序。还是原数组。求支援!

思考,我在调用排序方法的时候,返回的都是原数组,难道我的排序中调用自己类中的函数没能完成排序吗?

作者: fantacyleo    时间: 2014-7-9 18:23
你的那个交换函数写得不对。根本就没有交换数组的元素,只是交换了形参a和b的值
作者: hejinzhong    时间: 2014-7-9 18:25

这个是包含主函数的类的代码,上面那个只是部分功能代码

作者: tc庄稼汉    时间: 2014-7-9 18:28
亲 你的swap方法不对,应该是这样写 swap(int[] arr, int a, int b),调用时为swap(arr,j,j+1)。按照你的写法,swap内互换只在swap方法内有效。
作者: hejinzhong    时间: 2014-7-9 18:29
fantacyleo 发表于 2014-7-9 18:23
你的那个交换函数写得不对。根本就没有交换数组的元素,只是交换了形参a和b的值 ...

哦,原来如此,疏忽!形参和实参之间只是完成了值值传递,形参和实参在内存中的地址不同,所以形参的改变没能影响实参。
作者: hejinzhong    时间: 2014-7-9 18:31
tc庄稼汉 发表于 2014-7-9 18:28
亲 你的swap方法不对,应该是这样写 swap(int[] arr, int a, int b),调用时为swap(arr,j,j+1)。按照你的 ...


这是改进后的,运行没问题了。脑袋短路啊!


作者: 柀堓椛開    时间: 2014-7-9 18:38
static void bubbleSort(int [] arr)         {                 for(int i=0;i<arr.length-1;i++)                                          {                         for(int j=0;j<arr.length-1-i;j++)                         {                                         if(arr[j]>arr[j+1]){                                                            int temp =arr[j];                                            arr[j]=arr[j+1];                                            arr[j+1]=temp;                                 }                         }                                          }
作者: 柀堓椛開    时间: 2014-7-9 18:39
static void bubbleSort(int [] arr)
        {
                for(int i=0;i<arr.length-1;i++)
                       
                {
                        for(int j=0;j<arr.length-1-i;j++)
                        {
                                        if(arr[j]>arr[j+1]){
               
                                          int temp =arr[j];

                                          arr[j]=arr[j+1];

                                          arr[j+1]=temp;
                                }
                        }
                       
                }
作者: hejinzhong    时间: 2014-7-10 11:13
柀堓椛開 发表于 2014-7-9 18:39
static void bubbleSort(int [] arr)
        {
                for(int i=0;i

我把交换单独定义了一个函数,其他地方可以直接调用.你这么写没有问题。




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