前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >冒泡排序的原生实现方式(不要大意,不要闪,面试常考)

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

作者头像
用户7656790
发布2020-11-26 11:23:47
4740
发布2020-11-26 11:23:47
举报

图丨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循环,原生方法实现.

代码语言:javascript
复制
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数组方法实现升序:

代码如下:

代码语言:javascript
复制
//  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();

结束!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-11-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 五角钱的程序员 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 需求
  • 原生方法
  • 简便方法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档