前言

作为Java程序员,简单的算法,必须要掌握的。尤其初级开发人员在面试过程或者笔试都会有相应算法题,今天我们讲解冒泡排序算法是如何实现的以及优化方法。

何为冒泡排序

冒泡排序的基本思路:通过对待排序系列从前向后,依次比较相邻元素的值,若发现逆序就交换,意思就是使较大的元素从前向后移,好比水低下的气泡一样逐渐向上冒泡,一个道理的。

冒泡排序优缺点

优点:比较简单、空间复杂度较低、是稳定的一种排序。
缺点:时间复杂度太高、效率比较慢、一轮比较都需要换位置,所以效率不高,假如现在一个数组里面有N个数,那么排序完成需要比较N*(N-1)/2次。

冒泡排序规则

每一趟排序的次数在逐渐减少的
总的进行数组的大小减1次大的循环
每一趟比较完都会有最大值出现
冒泡排序实现代码如下图

冒泡排序的优化

冒泡优化就是说,如果我们发现在排序过程中,没有发生一次交换,我们可以让它提前结束,这就是优化。当我们在排序过程,大家都知道,各元素是不断接近自己的位置的,但是有时候排序并不是需要换位置,本身就是有顺序的,这时我们在排序过程中设置一个标标记flag判断一下元素是否进行交换(标记flag自己定义),这样大大减少必要的比较。代码如下图:

总结冒泡排序核心思想

冒泡排序的比较相邻的元素的,第一个比第二个大就要交换他们两个的位置。
冒泡排序对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,每次排序结束都会有最大值出现。
冒泡排序是持续每次对越来越少的元素重复上一步的步骤的,直到最后一轮没有比较数字就结束。
冒泡排序是一个经典的排序算法,值得大家掌握,平时小的笔试都会出现。

我是从事大数据、Java后端开发的,如果你也是正在考虑学习或者这学习中遇到什么问题,可以评论区留言或者私信,感兴趣的朋友可以关注我,后续会更新关于大数据、Java开发的技术文章。

Java冒泡排序算法以及算法优化,这篇足矣……相关推荐

  1. java开发学生管理系统,看这篇足矣了!

    20道常见MySQL数据库面试题+解析 事务四大特性(ACID)原子性.一致性.隔离性.持久性? 事务的并发?事务隔离级别,每个级别会引发什么问题,MySQL默认是哪个级别? MySQL常见的三种存储 ...

  2. Java的知识点18——数组存储表格数据、冒泡排序的基础算法、冒泡排序的优化算法、二分法查找

    数组存储表格数据 package cn.dym08; import java.util.Arrays; public class Test09 {public static void main(Str ...

  3. JAVA冒泡排序算法(含详细过程代码讲解及优化)

    冒泡排序算法拆分讲解及优化 java冒泡排序 一.代码的拆分讲解 从上面步骤,可以观察到每次的j都相对于前一趟进行-1操作,所以可以把这些操作套在一个for循环里来控制j即可. 二.冒泡排序的代码 优 ...

  4. Java冒泡排序算法思路细讲

    1. 什么是冒泡排序 1.1 算法了解 难度定位:属于计算机领域的初级算法,对初学者来说,可能感觉思路上比较饶. 名字由来:液体气泡从深向浅冒泡时,气泡会由小到大变化.在这里形象地指数值从小到大的排序 ...

  5. 算法函数_关于损失函数和优化算法,看这一篇就够了

    在进行神经网络训练时,很多同学都不太注重损失函数图和损失函数的优化算法的理解,造成的结果就是:看起来效果不错,但是不知道训练的参数是否合理,也不知道有没有进一步优化的空间,也不知道初始点的选择是否恰当 ...

  6. Java十大排序算法总结,Java排序算法总结之冒泡排序

    本文实例讲述了Java排序算法总结之冒泡排序.分享给大家供大家参考.具体分析如下: 前言:冒泡排序(BubbleSort)就是依次比较相邻的两个数,将小数放在前面,大数放在后面. 下面让我们一起    ...

  7. black-box优化——第一篇:基础BBO算法

    本篇博客先介绍一些 naive 的方法来解决 BBO 问题,这样可以让大家了解到为什么DFO在实际中,如此受到欢迎. 两个缩写: derivative free optimization (DFO) ...

  8. 数学建模常用算法:启发式优化算法合辑(内含多种智能优化算法,使用java实现算法、详细注释、并进行结果可视化)

    一.启发式算法介绍   启发式算法(heuristic algorithm)是相对于最优化算法提出的.一个问题的最优算法求得该问题每个实例的最优解.启发式算法可以这样定义:一个基于直观或经验构造的算法 ...

  9. Java中的经典算法之冒泡排序(Bubble Sort)

    Java中的经典算法之冒泡排序(Bubble Sort) 原理:比较两个相邻的元素,将值大的元素交换至右端. 思路:依次比较相邻的两个数,将小数放在前面,大数放在后面.即在第一趟:首先比较第1个和第2 ...

  10. adam算法_关于损失函数和优化算法,看这一篇就够了

    在进行神经网络训练时,很多同学都不太注重损失函数图和损失函数的优化算法的理解,造成的结果就是:看起来效果不错,但是不知道训练的参数是否合理,也不知道有没有进一步优化的空间,也不知道初始点的选择是否恰当 ...

最新文章

  1. python下载图片、已知url_python实现通过URL下载图片到本地服务器
  2. 《游戏开发物理学(第2版)》一1.3 坐标系
  3. WEB 3.0(非技术版)
  4. OD使用教程18 - 调试篇18
  5. mysql 中文字符 函数_MySQL基础之字符函数-Go语言中文社区
  6. Vscode之运行更新出错
  7. 算法:874. 模拟行走机器人
  8. 电力线通信有望在物联网应用中大放异彩
  9. ACD_把dwg像控件一样放到界面
  10. 基于python开发植物大战僵尸
  11. 中文名字和英文名字正则匹配
  12. 力扣每日一题(九——保持城市天际线)
  13. 安装NVIDIA显卡驱动以及CUDA
  14. matlab 残差 dw,Eviews中的自相关检验与修正操作(一):残差图与DW检验
  15. 阿里云服务器购买流程
  16. sim插拔识别时间_智能手机插拔寿命测试标准
  17. 如何做好自动化运维?自动化运维必备技能有哪些?
  18. 至少9所大学!将要招收计算机/软件专业第二学士学位!
  19. 美国养育孩子十七绝招
  20. BOC保护的苯丙氨酸锌卟啉(Zn·TAPP-Phe-BOC)/铁卟啉(Fe·TAPP-Phe-BOC)/镍卟啉(Ni·TAPP-Phe-BOC)/锰卟啉(Mn·TAPP-Phe-BOC)齐岳科普

热门文章

  1. 由女排夺冠对2016年奥运会的思考
  2. 制作USB启动盘(U盘安装ubuntu20.04)
  3. linux单个IP地址绑定多个域名详解
  4. 无法打开xpdf软件包
  5. 基于OpenCV的微信跳一跳外挂
  6. linux 查看CPU频率
  7. android ko 编译,如何把rtl8188EUS驱动编译生成ko模块并且下载到rk平台Android4.2.2上使用...
  8. JavaScript 强制类型转换(Number)
  9. 【青龙2.13依赖安装失败修复】ERR_PNPM_REGISTRIES_MISMATCH This modules directory was created using ...
  10. 生活中,会Python爬虫也能赚钱