常用排序算法专题—冒泡排序

作者: 9f5e612a0d44 | 来源:发表于2019-03-18 22:36 被阅读319次

冒泡排序

  冒泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生在这两个元素之间。所以,如果两个元素相等,是不会再交换的;如果两个相等的元素没有相邻,那么即使通过前面的两两交换把两个相邻起来,这时候也不会交换,所以相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定排序算法。

  • 基本思路

  我们假设有一个含有6个元素的int型的一维数组变量,他们分别是 2,7,8,9,6,4,我们对它们进行冒泡排序:

  我们首先对前6个元素进行第一轮排序:
对比第0个元素和第1个元素,即2和7,因为2<7,不进行操作;
对比第1个元素和第2个元素,即7和8,因为7<8,不进行操作;
对比第2个元素和第3个元素,即8和9,因为8<9,不进行操作;
对比第3个元素和第4个元素,即9和6,因为9>6,交换;
现在数组序列 2,7,8,6,9,4;
对比第4个元素和第5个元素,即9和4,因为9>4,交换;
现在数组序列 2,7,8,6,4,9;

  此时我们发现前6个数据的最大值‘9’已经“浮出”水面,我们下一步可以将前5个数据进行第二轮排序,让前5个数据的最大值“浮出”到倒数第二个位置。

  我们再对前5个元素进行第二轮排序:
对比第0个元素和第1个元素,即2和7,因为2<7,不进行操作;
对比第1个元素和第2个元素,即7和8,因为7<8,不进行操作;
对比第2个元素和第3个元素,即8和6,因为8>6,交换;
现在数组序列 2,7,6,8,4,9;
对比第3个元素和第4个元素,即8和4,因为8>4,交换;
现在数组序列 2,7,6,4,8,9; 停止

  此时我们发现前5个数据的最大值‘8’已经“浮出”到倒数第二个位置,我们下一步可以将前4个数据进行第三轮排序,让前4个数据的最大值“浮出”到倒数第三个位置。通过这种方法,以此类推,即可完成排序。

  • JAVA 代码如下:
package DataStructure;

public class BubbleSort {
    public static void sort(int[] arr) {
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = 0; j < arr.length - 1 - i; j++)
                if (arr[j] > arr[j + 1]) {
                    int temp = arr[j + 1];
                    arr[j + 1] = arr[j];
                    arr[j] = temp;
                }
        }
    }

    public static void main(String[] args) {
        int[] arr = { 2, 7, 8, 9, 6, 4 };
        sort(arr);
        for (int n : arr)
            System.out.print(n + " ");
    }

}
  • 时间复杂度

  若文件的初始状态是正序的,一趟扫描即可完成排序(需要优化代码)。冒泡排序最好的时间复杂度为 O(n)。
  冒泡排序的最坏时间复杂度为 O(n²)。
  综上,因此冒泡排序总的平均时间复杂度为 O(n²)。

相关文章

  • Java语言——数组排序算法

    数组有很多常用的算法,包括冒泡排序、直接选择排序和反转排序。 一、冒泡排序 冒泡排序是最常用的数组排序算法之一,它...

  • 2019-08-11

    Javascript中常用几种基础算法 1 排序-冒泡排序 //冒泡排序 function bubbleSort...

  • 7.4-全栈Java笔记:三种经典算法

    冒泡排序算法 冒泡排序是最常用的排序算法,在笔试中也非常常见,能手写出冒泡排序算法可以说是基本的素养。 算法重复地...

  • python 排序算法

    文章概述 介绍各大常用经典的排序算法和效率,以及python实现常用算法(冒泡排序,选择排序,快速排序,插入排序)...

  • 常用的排序算法

    常用的排序算法 常用的排序算法插入排序折半插入排序shell 排序冒泡排序选择排序快速排序基数排序归并排序堆排序K...

  • 排序算法

    概述 常用排序算法 冒泡排序 插入排序 选择排序 归并排序 快速排序 冒泡排序 步骤 比较相邻元素,如果前面元素比...

  • 经典排序算法总结

    经典排序算法集锦 冒泡法 排序算法入门之冒泡排序 排序算法入门之冒泡排序优化

  • 常用排序算法专题—冒泡排序

    冒泡排序   冒泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生在这两个元素之...

  • 七大排序算法之冒泡排序

    七大排序算法之冒泡排序 @(算法笔记)[排序算法, 冒泡排序, C++实现] 冒泡排序介绍 冒泡排序是七大排序算法...

  • 算法-冒泡排序

    算 法:冒泡排序算法时间复杂度: 冒泡排序算法概述 冒泡排序伪代码 冒泡排序实现 冒泡排序算法概述 冒泡排...

网友评论

    本文标题:常用排序算法专题—冒泡排序

    本文链接:https://www.haomeiwen.com/subject/fovimqtx.html