黑马程序员技术交流社区

标题: 忽然发现,冒泡排序其实只要一个循环,不用嵌套。。求. [打印本页]

作者: 布鲁Go    时间: 2013-11-30 19:01
标题: 忽然发现,冒泡排序其实只要一个循环,不用嵌套。。求.
本帖最后由 布鲁Go 于 2013-11-30 19:11 编辑

阴差阳错,我把冒泡排序的第二重嵌套给注释了!//for (int j=0;j<arr.length-j-1 ;j++ ),然后发现,一样可以排序成功。。。比如下面的打印结果为
无法理解。。 有疑问的也可以试一下,不知道有没有谁能解答下。。。
——————————————————————————————————————————————————————————————
class  bSort
{
        public static void main(String[] args)
        {
                int arr[]={1,4,5,7,9,4,99,515,5,12};
                printArray(arr);
                bubbleSort(arr);
                printArray(arr);
        }

        public static void bubbleSort(int[] arr)
        {
                for (int i=0;i<arr.length-1 ;i++ )
                {
                        //for (int j=0;j<arr.length-j-1 ;j++ )
                        if(arr>arr[i+1])
                        {
                                int temp=arr;
                                arr=arr[i+1];
                                arr[i+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.print(arr+"]");
                                       
                        }
                System.out.println();
        }
}


作者: Sasson    时间: 2013-11-30 19:05
没成功啊  只是将最后三个排序成功了
作者: 布鲁Go    时间: 2013-11-30 19:07
Sasson 发表于 2013-11-30 19:05
没成功啊  只是将最后三个排序成功了

难道是我的jdk有问题?我的是1.7的。。不会是新特性吧。。。我试了好几遍。。都晕了。。一直想不明白。
作者: 布鲁Go    时间: 2013-11-30 19:09
Sasson 发表于 2013-11-30 19:05
没成功啊  只是将最后三个排序成功了

哦,,是我看花眼了。。。晕倒。。。我之前的例子可能刚好是两个重合。。就重新写了个冒泡排序。。。然后还是看花眼了。。。。。啊。。打的太久有点晕了。。傻了。。。晕。。。害我想了老久。。。。我错了。。。。话说这个要怎么删除。。。丢人啊。。。o(╯□╰)o。。白想了那么久。。。。
作者: Sasson    时间: 2013-11-30 19:16
没有排序成功·····
原顺序
1,4,5,7,9,4,99,515,5,12
你就把里面的循环注释了  
那么只有一次循环,第一次1和4比较,不换位; 第二次4和5比较,不换位; 第三次5和7比较,不换位;
第四次7和9比较,不换位; 第五次9和4比较,换位;第六次换位后又的9和99比较,不换位; 第七次99和515比较,不换位; 第八次515和5比较,换位; 第九次换位后的515和12比较,换位;
所以输出顺序为
1,4,5,7,4,9,99,5,12,515

作者: Sasson    时间: 2013-11-30 19:20
没事
不要一直用脑  累了就去呼吸呼吸新鲜空气

话说你要是想进28期的话有点紧张
加油了
作者: 布鲁Go    时间: 2013-11-30 19:23
Sasson 发表于 2013-11-30 19:20
没事
不要一直用脑  累了就去呼吸呼吸新鲜空气

恩,谢谢了。  是有点晕了。。。没事,28不行就进29吧。。。。基础打好最重要。。。话说这里的氛围真好。。。满满的学习动力啊。哈哈。
作者: 朱神必    时间: 2013-12-6 08:54
满满的都是正能量
作者: 王家胜    时间: 2013-12-6 11:57
  1. if(arr>arr[i+1])
  2.    {
  3.              int temp=arr;
  4.               arr=arr[i+1];
  5.               arr[i+1]=temp;
  6. }
复制代码

这是错误的语句,可能你的软件有问题,重启一下工具,eclipse和myeclipse会出现这样的问题




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