冒泡排序的原生实现方式(不要大意,不要闪,面试常考)

Posted 五角钱的程序员

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了冒泡排序的原生实现方式(不要大意,不要闪,面试常考)相关的知识,希望对你有一定的参考价值。

第一时间关注技术干货!


✨一起学习、成长、温情的热爱生活✨  



图丨pexels

冒泡排序是一种比较简单的排序算法,它循环走过需要排序的元素,依次比较相邻的两个元素,如果顺序错误就交换,直至没有元素交换,完成排序。

若对n个人进行排序,我们需要n-1次比较,所以第k次比较需要进行n-k次比较。排序算法通过以数据对象的两两比较作为关键,所以可以得出,冒泡排序需要进行的

比较次数为:(n-1) + (n-2) + ... + 1 = n*(n-1) / 2,因此冒泡排序的时间复杂度为O(n^2)

  • 基本思想: 冒泡排序,类似于水中冒泡,较大的数沉下去,较小的数慢慢冒起来,假设从小到大,即为较大的数慢慢往后排,较小的数慢慢往前排。

  • 直观表达,每一趟遍历,将一个最大的数移到序列末尾。

算法简介:

  1. 比较相邻的元素,前一个比后一个大(或者前一个比后一个小)调换位置

  2. 每一对相邻的元素进行重复的工作,从开始对一直到结尾对,这步完成后,结尾为做大或最小的数.

  3. 针对除了最后一个元素重复进行上面的步骤。

  4. 重复1-3步骤直到完成排序

动画演示:

Java中冒泡排序的原生实现方式(正序和逆序)

需求

给定数组,ary=[2,4,5,3,1], 如何升序或逆序排列?

原生方法

提示: Arrays.sort只能升序排列, 先用双重for循环,原生方法实现.

public  class T02 {
    public static void main(String[] args) {
        //冒泡升序
        int [] ary = {1,4,5,6,7,8,3,2};
        for (int i = 0; i <ary.length ; i++) {
            for (int j = (i+1); j <ary.length ; j++) {
                if (ary[i]>ary[j]){
                    // 交换两者的值
                    int c = ary[i];
                    ary[i] = ary[j];
                    ary[j] = c;
                }
            }
        }
        // 写在双重for循环外面
        for (int i1 : ary) {
            System.out.print(i1);
        }
    }
}

打印结果: 12345678

降序的实现只需要更改 if( ) 中条件,让 ary[i] < ary[j] 即可.

简便方法

利用Arrays.sort数组方法实现升序:

代码如下:

//  Array.sort排序
        int [] ary = {2,4,1,3,5,6,8,7,9};
        Arrays.sort(ary);
        for (int i1 : ary) {
            System.out.print(i1);
        }
        System.out.println();
        // 倒序排列,没有方法
        for (int i = ary.length-1; i > -1 ; i--) {
            System.out.print(ary[i]);
        }
        System.out.println();


结束!

推荐阅读:










可爱且懂得生活的研究生一枚(码农一枚)。

"一起学习、成长、温情的热爱生活。"

私人微信|zijietiaodongpro (字节跳动pro)

CSDN|知乎|github|掘金:五角钱的程序员 


关注福利

几百本常用技术类电子书籍


五角钱的程序员

希望这篇文章可以帮到你~
欢迎大家点个在看,分享至朋友圈


你我都成为光发热之人, 在看在看在看 ~(疯狂暗示!)  

以上是关于冒泡排序的原生实现方式(不要大意,不要闪,面试常考)的主要内容,如果未能解决你的问题,请参考以下文章

js面试常考之数组冒泡排序

总结:大厂面试常考手撕代码 —— JavaScript排序算法(冒泡排序选择排序插入排序快速排序)

面试常考各类排序算法总结.(c#)

七大排序——冒泡排序

排高低:冒泡与插入排序。不要管别人,自己设计的才是自己的。

数据结构与算法系列十一(冒泡排序)