黑马程序员技术交流社区

标题: 函数调用问题?? [打印本页]

作者: haitianzhilian    时间: 2014-3-14 22:32
标题: 函数调用问题??
本帖最后由 haitianzhilian 于 2014-3-14 23:01 编辑

class Demo
{
         public static void main(String[] args)
         {        
         int[] arr={10,11,6,7,5,9,0};
         System.out.print("数组排序前为:");
         PrintArray(arr);
     BubbleSort(arr);//调用已经定义好的冒泡排序函数
         System.out.print("数组排序后为:");
         PrintArray(arr);
         }
         //定义一个冒泡排序函数BubbleSort
         public static void BubbleSort(int[] arr)
         {
                 for(int i=0;i<arr.length-1;i++)
                         for(int j=arr.length-1;j<i;j--)
                             if(arr[j]<arr[j-1])
                                         {
                                         int temp=arr[j];
                                         arr[j]=arr[j-1];
                                         arr[j-1]=temp;
                                         }
         }
         //定义一个输出数组的函数
         public static void PrintArray(int[] arr)
         {
                 System.out.print("[");
                         for(int i=0;i<arr.length;i++)
                                 {
                                 if(i!=arr.length-1)
                                         System.out.print(arr+",");
                                 else
                                         System.out.println(arr+"]");
                                 }
         }
}

捕获.PNG (2.34 KB, 下载次数: 6)

捕获.PNG

作者: chen_x    时间: 2014-3-14 22:47
for(int i=0;i<arr.length-1;i++)
       for(int j=arr.length-1;j<i;j--)
双层循环的内层循环的终止判断条件应该是j>i, 不是j<i,没有满足j<i条件的j值吧,循环体一次都没执行.
这个是从数组后面向前冒泡,每次循环后,数组前面都是有序的。
改成j>i, 运行结果就正常的,运行结果是:数组排序前为:[10,11,6,7,5,9,0]
                                                        数组排序后为:[0,5,6,7,9,10,11]
作者: haitianzhilian    时间: 2014-3-14 23:12

谢谢了,一下明白了,在机器上看那么久就是没看出来啊,真够晕的!




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