黑马程序员技术交流社区

标题: 【黑马程序员济南】JavaEE基础-冒泡排序 [打印本页]

作者: 小鲁哥哥    时间: 2017-7-17 14:42
标题: 【黑马程序员济南】JavaEE基础-冒泡排序
本帖最后由 小鲁哥哥 于 2017-9-14 15:13 编辑

【黑马程序员济南】JavaEE基础-冒泡排序


       今天给大家详细讲解一个案例:数组冒泡排序。

       具体是这样的:有一个数组 int[] arr = {24, 69, 80, 57, 13};  把这个数组按从大到小的顺序排列。

       我们冒泡排序的思路是这样的:从头开始两两比较,也就是0索引和1索引的元素比较,如果1索引比较大就交换位置,然后1索引和2索引元素比较,以此类推。大的数组就像水里的泡泡一样,越接近水面气泡越大。

      

      好的,让我们画几个泡泡吧!



   这是数组原来的样子,我们按照数字的大小画了泡泡。一个泡泡从水里冒出到水面,随着压强的减小,气泡是越来越大的,所以我们这个看着就不太对啦。我们开始排序吧。

[Java] 纯文本查看 复制代码
                for (int i = 0; i < arr.length - 1; i++) { // 外循环只需要比较arr.length-1次就可以了
                        for (int j = 0; j < arr.length - 1 - i; j++) {// -1为了防止索引越界,-i为了提高效率(后面排好序的就不比较了)
                                if (arr[j] > arr[j + 1]) {// j元素跟j+1比较
                                        int temp = arr[j];
                                        arr[j] = arr[j + 1];
                                        arr[j + 1] = temp;
                                }
                        }
                }

   第一次比较:24和69比较-交换,24和80比较-交换,24和57比较-交换,24和13比较-不交换,因此第一次遍历之后顺序为:
   
       我们发现13 、24、57的顺序已经排好。接下来我们继续分析排序步骤:69和80比较-交换,69和57比较-不交换,57和24比较-不交换,24和13比较-不交换。
      
    至此我们就排好啦,通过图片是不是很直观就明白了冒泡排序的过程?哈哈~
      

作者: jingxian90    时间: 2017-7-17 14:50
学到东西了,通俗易懂,简明扼要,条理清晰

作者: 小鲁哥哥    时间: 2017-7-17 14:52
jingxian90 发表于 2017-7-17 14:50
学到东西了,通俗易懂,简明扼要,条理清晰

厉害了,我刚发你就看完啦,老铁666
作者: qidianlu    时间: 2017-7-21 11:23
老铁,给力啊
作者: fashionkillyou    时间: 2017-9-23 12:43
小鲁哥哥 发表于 2017-7-17 14:42
【黑马程序员济南】JavaEE基础-冒泡排序

       今天给大家详细讲解一个案例:数组冒泡排序。

真形象的泡泡




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