美文网首页
Java简单排序之冒泡排序

Java简单排序之冒泡排序

作者: 越努力越幸运阳 | 来源:发表于2020-04-13 18:12 被阅读0次
排序原理:
  1. 比较相邻的元素。如果前一个元素比后一个元素大,就交换这两个元素的位置。
  2. 对每一对相邻元素做同样的工作,从开始第一对元素到结尾的最后一对元素。最终最后位置的元素就是最大
    值。
冒泡排序的图片展示.png
冒泡排序的代码实现:
    public static void bubbleSort(int[] a) {
        System.out.println("待排序数据: " + Arrays.toString(a));
        for (int i = 0; i < a.length - 1; i++) {
            //记录是否有元素互换的操作,如果没有元素互换的操作,说明已经提前排好,不需要继续排序了
            boolean isSort = false;
            //每循环一次,最后的数据肯定就是最大的了,所以就不需要在比较后面的数据了,所以结束条件j < a.length - 1 - i
            for (int j = 0; j < a.length - 1 - i; j++) {
                if (a[j] > a[j + 1]) {
                    int temp = a[j + 1];
                    a[j + 1] = a[j];
                    a[j] = temp;
                    isSort = true;
                }
            }
            System.out.println("第" + (i + 1) + "轮排序后的数组为: " + Arrays.toString(a));
            if (!isSort) {
                System.out.println("本轮中的两两比较未发生元素互换,代表排序已经完成啦");
                return;
            }
        }
    }
排序结果:
待排序数据: [4, 5, 6, 3, 2, 1]
第1轮排序后的数组为: [4, 5, 3, 2, 1, 6]
第2轮排序后的数组为: [4, 3, 2, 1, 5, 6]
第3轮排序后的数组为: [3, 2, 1, 4, 5, 6]
第4轮排序后的数组为: [2, 1, 3, 4, 5, 6]
第5轮排序后的数组为: [1, 2, 3, 4, 5, 6]
冒泡排序的时间复杂度分析 :

冒泡排序使用了双层for循环,其中内层循环的循环体是真正完成排序的代码,所以, 我们分析冒泡排序的时间复杂度,主要分析一下内层循环体的执行次数即可。
在最坏情况下,也就是假如要排序的元素为{6,5,4,3,2,1}逆序,那么: 元素比较的次数为:
(N-1)+(N-2)+(N-3)+...+2+1=((N-1)+1)(N-1)/2=N^2/2-N/2;
元素交换的次数为:
(N-1)+(N-2)+(N-3)+...+2+1=((N-1)+1)
(N-1)/2=N^2/2-N/2;
总执行次数为:
(N^2 /2-N/2)+(N^2 /2-N/2)=N^2-N; 按照大O推导法则,保留函数中的最高阶项那么最终冒泡排序的时间复杂度为O(N^2).

相关文章

  • 经典排序算法总结

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

  • java中的冒泡排序、for循环的嵌套使用以及接口与抽象类的区别

    一、java冒泡排序。 java中的冒泡排序为一种简单的交换排序方法。其基本思路是从头开始扫描需要排序的元素,在扫...

  • 常见排序算法之冒泡排序

    常见排序算法之冒泡排序 冒泡排序(Bubble Sort),是一种较简单的排序算法。它重复地走访过要排序的元素列,...

  • 算法之冒泡排序

    算法之冒泡排序 一:基本概念冒泡排序(Bubble Sort),又被称为气泡排序或泡沫排序;它是一种比较简单的排序...

  • 排序算法的实现

    用java对常用内部排序算法的实现。 对冒泡排序,简单选择排序,直接插入排序,希尔排序,归并排序的简单实现(缺少快...

  • 必须知道的排序算法和对应语言的实现

    必须知道的排序算法—Java实现 1 冒泡排序 冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较...

  • 算法学习之简单排序

    简单排序 简单排序有三种, 冒泡排序,选择排序,插入排序 冒泡排序 冒泡排序是一种易于实现的排序算法, 以升序为例...

  • Java基础01 冒泡排序

    冒泡排序 Java中有很多种排序:冒泡排序、快速排序、选择排序、插入排序、希尔排序,甚至还有基数排序、鸡尾酒排序、...

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

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

  • 排序算法

    常见的排序算法有: 冒泡排序 快速排序 插入排序 归并排序 堆排序 1. 冒泡排序 冒泡排序是一种极其简单的排序算...

网友评论

      本文标题:Java简单排序之冒泡排序

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