• 首页

  • 归档

  • 分类

  • 标签

  • 喵星人

  • 心情

  • 关于
W e A r e F a m i l y ! m i a o ~
W e A r e F a m i l y ! m i a o ~

柴子

青春流逝,记录往昔

11月
11
算法

排序算法-冒泡排序

发表于 2021-11-11 • 字数统计 921 • 被 133 人看爆

bubbleSort.gif

  • 核心思想:比较相邻的两个元素,不符合则交换位置

  • 时间复杂度:O(n^2)

  • 空间复杂度:O(1)

    /**
     * 冒泡排序
     * 相当于每一次循环都把最大的放到最后面,所以j<array.length- i ,最大的已经在最后了,不需要再循环到它
     * 比较相邻的两个元素,不符合则交换位置
     * 循环length-1次即可
     * 时间复杂度O(n^2)
     * 优化策略:
     *      1. 使用标志位,如果一次循环都没有进行交换,那么认为已经有序,直接退出
     *      2. 使用变量记录最后交换的位置,也就是替换掉j < array.length - 1 - i 为 j< 最后交换的位置。因为每次循环
     *      最大的已经放在最后了。其实到最后交换的位置就不需要再往后遍历了
     *      3. 冒泡变种优化:鸡尾酒排序,第一轮从左到右,第二轮从右到左,更大的提升效率
     *          例子:因为从左到右是把最大的放到后面,如果有个最小值在最后面,其他都是有序的,那么白白移动了其他元素,所以
     *          从右到左来一遍,将最小的放在最前。
     */
    public static void bubbleSort(int[] array) {
        for (int i = 0; i < array.length - 1 ; i++) {
            for (int j = 0 ; j < array.length - 1 - i ; j++) {
                if (array[j] > array[j + 1]) {
                    swap(array, j, j + 1);
                }
            }
        }
    }
分享到:
排序算法-插入排序
排序算法-选择排序
  • 文章目录
  • 站点概览
柴子

内蒙 柴子

what do U want?

Github QQ Email RSS
最喜欢的电影
最喜欢的游戏
最喜欢的音乐
最喜欢的图书
最喜欢的动漫
夏洛特的烦恼
英雄联盟
痴心绝对
数据库从入门到删库跑路
斗破苍穹
看爆 Top5
  • 微信getUserProfile兼容性调整以及uniapp写法 1,866次看爆
  • gateway转发微服务请求丢失header参数 855次看爆
  • mybatis-plus代码生成器 848次看爆
  • Spring Boot Security从入门到进阶到高级 444次看爆
  • 物业报修系统设计-简化版 425次看爆
转载注明出处

站点已萌萌哒运行 00 天 00 小时 00 分 00 秒(●'◡'●)ノ♥

Copyright © 2022 柴子 京ICP备17035556号-1

由 Halo 强力驱动 · Theme by Sagiri · 站点地图