• 经典算法之冒泡排序


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

    冒泡 

            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个数也就没有必要在排位置,这样的话效率也就比多排一次要高。

  • 相关阅读:
    Working with macro signatures
    Reset and Clear Recent Items and Frequent Places in Windows 10
    git分支演示
    The current .NET SDK does not support targeting .NET Core 2.1. Either target .NET Core 2.0 or lower, or use a version of the .NET SDK that supports .NET Core 2.1.
    Build website project by roslyn through devenv.com
    Configure environment variables for different tools in jenkins
    NUnit Console Command Line
    Code Coverage and Unit Test in SonarQube
    头脑王者 物理化学生物
    头脑王者 常识,饮食
  • 原文地址:https://www.cnblogs.com/donghaibin/p/9056238.html
Copyright © 2020-2023  润新知