Java之冒泡排序

简介: Java之冒泡排序

排序的介绍

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

1. 排序的分类:

  1. 内部排序:

指将需要处理的所有数据都加载到内部存储器中进行排序。包括(交换式排序法、选择
式排序法和插入式排序法);

  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");
        }
    
    }

在这里插入图片描述

目录
相关文章
|
7月前
|
Java
冒泡排序(java)
冒泡排序(java)
|
8月前
|
存储 搜索推荐 算法
Java数组全套深入探究——进阶知识阶段2、冒泡排序
Java数组全套深入探究——进阶知识阶段2、冒泡排序
92 0
|
8月前
|
Java C语言
用Java(C语言也可以看)实现冒泡排序和折半查找(详细过程图)+逆序数组
用Java(C语言也可以看)实现冒泡排序和折半查找(详细过程图)+逆序数组
76 0
|
3月前
|
机器学习/深度学习 算法 搜索推荐
让星星⭐月亮告诉你,Java冒泡排序及其时间复杂度计算
冒泡排序是一种简单的排序算法,通过多次遍历数组,每次比较相邻元素并交换位置,将较小的元素逐步移至数组前端。第一轮结束后,最小值会位于首位;第二轮则将次小值置于第二位,依此类推。经过 (n-1) 轮遍历后,数组完成排序。冒泡排序的时间复杂度为 O(n²),在最优情况下(已排序数组)时间复杂度为 O(n)。示例代码展示了如何实现冒泡排序。
77 1
|
3月前
|
算法 Java
java冒泡排序与二分查找(详解)
java冒泡排序与二分查找(详解)
49 4
|
3月前
|
人工智能 Java
java之冒泡排序8个数
java之冒泡排序8个数
22 0
|
5月前
|
搜索推荐 Java
|
搜索推荐 Java
简单而经典:Java中的冒泡排序算法详解
冒泡排序(Bubble Sort)是一种简单的排序算法,它通过多次遍历待排序的元素,比较相邻元素的大小,并交换它们直到整个序列有序。冒泡排序的基本思想是将较大的元素逐渐“浮”到数组的右端,而较小的元素逐渐“沉”到数组的左端。
944 1
简单而经典:Java中的冒泡排序算法详解
|
8月前
|
存储 算法 Java
wtf?java的冒泡排序还可以这样写
wtf?java的冒泡排序还可以这样写
34 1