zoukankan      html  css  js  c++  java
  • 经典算法之冒泡排序

    冒泡:我们可以形象的想起水泡在大海里形成的过程,它是在上升的过程中逐渐的变大,直到破裂。

    冒泡 

            1.它的排序的思想:相邻的两个元素进行比较,每一轮可以获取其某个元素的合适的位置(也就是说可以求出这个数组的最左边或者是最右边的位置:即是最大值或最小值)
             其次需要注意的就是它的比较的次数,按本数组来说的话:
             第一轮:比较的次数     5    索引从0开始:arr.length - 1
             第二轮:比较的次数     4               arr.length - 2
             第三轮:比较的次数     3               。。。。
             第四轮:比较的次数     2               。。。。
             第五轮:比较的次数     1                arr.length - 5
             第n轮                                              arr.length - n
            2.由于要定义轮数和次数,所以需要嵌套for循环,具体的代码如下:

     1 public static void bubbleSort() {
     2         //使用静态初始化的方式定义一个数组。
     3         int[] arr = {2,4,1,8,3,10,0};
     4         /**
     5          * 注意:如果遍历轮数的索引 i = 1 的话,那么此时的 i < arr.length;此时
     6          * 由于每一轮都会获取一个最大值或者最小值,所以当排到最后一个数的时候也就没有必要再次对其进行排序了
     7          * 主要的原因是前面的位置已经都站定了,所以它排序与不排序都不会影响结果,如果最后一个数也排序的话,不会报错,但是会浪费资源
     8          * 
     9          */
    10         for(int i = 0; i < arr.length - 1; i++) {//轮数 1,2,3,4,5
    11             for(int j = 0; j < arr.length - i - 1; j ++) {//比较的是次数;注意最后一个数的时候,就不需要在次比较了
    12                 //判断,如果前一个元素大于或一个元素的话,那么就交换位置(当然也可以从小到大排序)
    13                 if(arr[j] > arr[j + 1]) {
    14                     //交换位置
    15                     int temp = arr[j];
    16                     arr[j] = arr[j +  1];
    17                     arr[j + 1] = temp;
    18                 }
    19             }
    20         }
    21         //遍历数组。
    22         System.out.println(Arrays.toString(arr));
    23     }

    注意:以本数组为例的话,它需要执行6轮,但是需要注意的是,7个数字,如果6个数已经排好了位置,第7个数也就没有必要在排位置,这样的话效率也就比多排一次要高。

  • 相关阅读:
    直接插入排序
    简单选择排序
    xml错误: A pseudo attribute name is expecte
    接口, 抽象类
    The hierarchy of the type AudienceAdvice is inconsistent 《spring in action》
    spring配置文件出错解决办法
    Sangfor tester 实习总结
    求一棵树的面积,2014百度开发测试笔试题
    百度2014校招-深圳-开发测试-求最小“不重复数”
    二个数相加,不使用加减乘除
  • 原文地址:https://www.cnblogs.com/donghaibin/p/9056238.html
Copyright © 2011-2022 走看看