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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hejinzhong 中级黑马   /  2014-7-9 18:18  /  1481 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文




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

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

8 个回复

倒序浏览
你的那个交换函数写得不对。根本就没有交换数组的元素,只是交换了形参a和b的值
回复 使用道具 举报

这个是包含主函数的类的代码,上面那个只是部分功能代码
回复 使用道具 举报
亲 你的swap方法不对,应该是这样写 swap(int[] arr, int a, int b),调用时为swap(arr,j,j+1)。按照你的写法,swap内互换只在swap方法内有效。
回复 使用道具 举报
fantacyleo 发表于 2014-7-9 18:23
你的那个交换函数写得不对。根本就没有交换数组的元素,只是交换了形参a和b的值 ...

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


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

回复 使用道具 举报
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;                                 }                         }                                          }
回复 使用道具 举报
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

我把交换单独定义了一个函数,其他地方可以直接调用.你这么写没有问题。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马