关于java:Java之冒泡排序

排序的介绍

  • 排序是将多个数据,依指定的程序进行排列的过程。

    1. 排序的分类:

  • 外部排序:
    指将须要解决的所有数据都加载到外部存储器中进行排序。包含(交换式排序法、抉择
    式排序法和插入式排序法);
  • 内部排序法:
    数据量过大,无奈全副加载到内存中,须要借助内部存储进行排序。包含(合并排序法和间接合并排序法)。

    2. 冒泡排序法

  • 冒泡排序(Bubble Sorting)的根本思维是:通过看待排序序列从后向前(从下标较大的元素开始),顺次比拟相邻元素的值,若发现逆序则替换,使值较大的元素逐步从前移向后部,就像水底下的气泡一样逐步向上冒。

    3. 冒泡排序法案例:

    BubbleSort.java

  • 上面咱们举一个具体的案例来阐明冒泡法。咱们将五个无序:24,69,80,57,13 应用冒泡排序法将其排成一个从小到大的有序数列。
  • 图像剖析:

    思路:

  • 化繁为简,先死后活
    数组 [24,69,80,57,13]
    第1轮排序: 指标把最大数放在最初
    第1次比拟[24,69,80,57,13]
    第2次比拟[24,69,80,57,13]
    第3次比拟[24,69,57,80,13]
    第4次比拟[24,69,57,13,80]
    int[] arr = {24, 69, 80, 57, 13};
    int temp = 0; //用于辅助替换的变量

    for( int j = 0; j < 4; j++) {//4次比拟
          //如果后面的数>前面的数,就替换
          if(arr[j] > arr[j + 1]) {
              temp = arr[j];
              arr[j] = arr[j+1];
              arr[j+1] = temp;  
          }
      }

      System.out.println("==第1轮==");
      for(int j = 0; j < arr.length; j++) {
          System.out.print(arr[j] + "\t");
      }
      /*
      第2轮排序: 指标把第二大数放在倒数第二地位
      第1次比拟[24,69,57,13,80]
      第2次比拟[24,57,69,13,80]
      第3次比拟[24,57,13,69,80]
       */

      for( int j = 0; j < 3; j++) {//3次比拟
          //如果后面的数>前面的数,就替换
          if(arr[j] > arr[j + 1]) {
              temp = arr[j];
              arr[j] = arr[j+1];
              arr[j+1] = temp;  
          }
      }

      System.out.println("\n==第2轮==");
      for(int j = 0; j < arr.length; j++) {
          System.out.print(arr[j] + "\t");
      }


      //第3轮排序: 指标把第3大数放在倒数第3地位
      //第1次比拟[24,57,13,69,80]
      //第2次比拟[24,13,57,69,80]


      for( int j = 0; j < 2; j++) {//2次比拟
          //如果后面的数>前面的数,就替换
          if(arr[j] > arr[j + 1]) {
              temp = arr[j];
              arr[j] = arr[j+1];
              arr[j+1] = temp;  
          }
      }

      System.out.println("\n==第3轮==");
      for(int j = 0; j < arr.length; j++) {
          System.out.print(arr[j] + "\t");
      }

      /*
      第4轮排序: 指标把第4大数放在倒数第4地位
      第1次比拟[13,24,57,69,80]
       */

      for( int j = 0; j < 1; j++) {//1次比拟
          //如果后面的数>前面的数,就替换
          if(arr[j] > arr[j + 1]) {
              temp = arr[j];
              arr[j] = arr[j+1];
              arr[j+1] = temp;  
          }
      }

      System.out.println("\n==第4轮==");
      for(int j = 0; j < arr.length; j++) {
          System.out.print(arr[j] + "\t");
      }

  • 将多轮排序应用外层循环包含起来即可
    先死后活 => 4就是 arr.length - 1
    int[] arr = {24, 69, 80, 57, 13};
        int temp = 0; //用于辅助替换的变量

        //将多轮排序应用外层循环包含起来即可
        //先死后活 =》 4就是 arr.length - 1
    for( int i = 0; i < arr.length - 1; i++) {//外层循环是4次
    
        for( int j = 0; j < arr.length - 1 - i; j++) {//4次比拟-3次-2次-1次
            //如果后面的数>前面的数,就替换
            if(arr[j] > arr[j + 1]) {
                temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;  
            }
        }
        System.out.println("\n==第"+(i+1)+"轮==");
        for(int j = 0; j < arr.length; j++) {
            System.out.print(arr[j] + "\t");
        }
    
    }

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理