冒泡排序

1.简介:

冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。
它的最坏时间复杂度为O(n2),最好时间复杂度为O(n),平均时间复杂度为O(n2),它是稳定排序。

2.算法原理:

  • 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
  • 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
  • 针对所有的元素重复以上的步骤,除了最后一个。
  • 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

结合动态图理解一下:

(图片来源:十大经典排序算法(动图演示))
3.代码实现:

冒泡排序比较简单,我们就直接上代码

    public static void maoPao(int[] a) {for(int i = 0;i < a.length-1;i++) {//外层循环次数for(int j = 0;j < a.length-i-1;j++) {//内层循环比较大小if(a[j] > a[j+1]) {int temp = a[j];a[j] = a[j+1];a[j+1] = temp;}}}}

测试一波:

package sort;
/*** @author yzh* @date 2019-07-15 14:27*/
public class MaoPao {public static void maoPao(int[] a) {for(int i = 0;i < a.length-1;i++) {for(int j = 0;j < a.length-i-1;j++) {if(a[j] > a[j+1]) {int temp = a[j];a[j] = a[j+1];a[j+1] = temp;}}}}public static void main(String[] args) {int[] a = {4,987,64,52,75,3,19};maoPao(a);for(int i = 0;i < a.length;i++){System.out.println(a[i]);}}
}

测试结果:

4.优缺点:

  • 优点:比较简单,空间复杂度较低,是稳定的;
  • 缺点:时间复杂度太高,效率慢;

排序:Java实现冒泡排序原理及代码注释详解相关推荐

  1. 【MATLAB】混合粒子群算法原理、代码及详解

    目录 1.算法 1.1.原理 1.2.性能比较 1.3.步骤 2.代码 2.1.源码及注释 2.2.执行与效果 1.算法 1.1.原理 \qquad建议没接触过粒子群算法的朋友先看较为基础的全局粒子群 ...

  2. php编写冒泡排序算法_PHP排序算法之冒泡排序(Bubble Sort)实现方法详解

    本文实例讲述了PHP排序算法之冒泡排序(Bubble Sort)实现方法.分享给大家供大家参考,具体如下: 基本思想: 冒泡排序是一种交换排序,它的基本思想是:两两比较相邻记录的关键字,如果反序则交换 ...

  3. ajax代码原理,关于Ajax的原理以及代码封装详解

    前言 其实AJAX内部实现并不麻烦,主要通过一个叫XMLHttpRequest的对象,而这个对象在现有的浏览器均被支持. 可以说,它是整个AJAX实现的基础,是浏览器用于后台与服务器交换数据的对象,有 ...

  4. Java语言求笛卡尔积,Java笛卡尔积算法原理与实现方法详解

    本文实例讲述了Java笛卡尔积算法原理与实现方法.分享给大家供大家参考,具体如下: 笛卡尔积算法的Java实现: (1)循环内,每次只有一列向下移一个单元格,就是CounterIndex指向的那列. ...

  5. Matlab 基本知识(附代码注释详解)

    Matlab 基本知识 第1部分:变量定义和基本运算 %% % 建议有C语言或其他编程基础,了解线性代数和矩阵相关知识 % https://ww2.mathworks.cn/help/matlab/ ...

  6. Netty-案例 WebSocket与netty实现长连接案例(代码注释详解)

    Netty 记录学习,开心学习,来源尚硅谷韩顺平netty视频 1 NettyServer package com.fs.netty.simple;import io.netty.bootstrap. ...

  7. 从入门到入土:Python爬虫学习|实例练手|爬取新浪新闻搜索指定内容|Xpath定位标签爬取|代码注释详解

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  8. 从入门到入土:Python爬虫学习|实例练手|爬取百度产品列表|Xpath定位标签爬取|代码注释详解

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  9. JS:冒泡排序 (思路+代码)详解

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 目录 文章目录 一 整体思路 二.使用步骤 1.第一步 2.第二步 总结:记忆口诀 一 .整体思路 => 相邻两个数之 ...

最新文章

  1. DeepMind 综述深度强化学习:智能体和人类相似度竟然如此高!
  2. 2018前端常见问题整理
  3. 国外centos服务器配置epel源
  4. D - Undoubtedly Lucky Numbers CodeForces - 244B(数论 )
  5. PHP编写命令行脚本和后台运行程序的注意事项
  6. 如何运行vue项目 ?(详解,建议收藏) ❤️
  7. 子域收集-fierce
  8. Nexus 的下载和部署
  9. java 有哪些框架_Java常用框架有哪些?这些框架有什么用?
  10. docker 网络模式之 macvlan模式
  11. 爬取mzitu图 线程 进程
  12. 服务器终端性能测试之iometer
  13. 嵌入式Linux为Qt定制keymap
  14. 一个排列是某些对象的有序组合,例如,3124 就是数字 1,2,3,4 的一种可能排列。 如果所有的排列按照数值或者字母序排序,我们称其为一个字典序。 0, 1, 2 的字典排列有:012 021 1
  15. 标准盒子模型与怪异盒子模型
  16. phpExcel导出excel文件浏览器一直不会出现下载框
  17. python快速注释html5_python注释代码块
  18. C语言视频教程-谭浩强版-小甲鱼主讲—P13
  19. 听闻华为停止社招,为什么我会感到一丝恐慌
  20. 阿里云 CDN 业务基于边缘容器的云原生转型实践

热门文章

  1. 服装行业常用术语(zt)
  2. Buuctf-[GXYCTF2019]BabyUpload
  3. 查有梁:天上有颗行星 名叫落下闳星
  4. Java IO流详尽解析
  5. matlab关于colorbar的整理(绘制不等间距colorbar, colorbar的大小位置调节, colorbar加单位等)
  6. 联想笔记本台式机专用系统 GHOSTXPSP3 v2013.06 海量驱动DVD版
  7. Spring Data Rest!五分钟帮我们实现Rest服务
  8. neso n810 i7 android 4.4,NESO推11.6寸平板/PC二合一产品E1210
  9. each的用法及while 的使用方法
  10. SQLAlchemy 1.3文档中文版 - 对象关系指南