排序:Java实现冒泡排序原理及代码注释详解
冒泡排序
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实现冒泡排序原理及代码注释详解相关推荐
- 【MATLAB】混合粒子群算法原理、代码及详解
目录 1.算法 1.1.原理 1.2.性能比较 1.3.步骤 2.代码 2.1.源码及注释 2.2.执行与效果 1.算法 1.1.原理 \qquad建议没接触过粒子群算法的朋友先看较为基础的全局粒子群 ...
- php编写冒泡排序算法_PHP排序算法之冒泡排序(Bubble Sort)实现方法详解
本文实例讲述了PHP排序算法之冒泡排序(Bubble Sort)实现方法.分享给大家供大家参考,具体如下: 基本思想: 冒泡排序是一种交换排序,它的基本思想是:两两比较相邻记录的关键字,如果反序则交换 ...
- ajax代码原理,关于Ajax的原理以及代码封装详解
前言 其实AJAX内部实现并不麻烦,主要通过一个叫XMLHttpRequest的对象,而这个对象在现有的浏览器均被支持. 可以说,它是整个AJAX实现的基础,是浏览器用于后台与服务器交换数据的对象,有 ...
- Java语言求笛卡尔积,Java笛卡尔积算法原理与实现方法详解
本文实例讲述了Java笛卡尔积算法原理与实现方法.分享给大家供大家参考,具体如下: 笛卡尔积算法的Java实现: (1)循环内,每次只有一列向下移一个单元格,就是CounterIndex指向的那列. ...
- Matlab 基本知识(附代码注释详解)
Matlab 基本知识 第1部分:变量定义和基本运算 %% % 建议有C语言或其他编程基础,了解线性代数和矩阵相关知识 % https://ww2.mathworks.cn/help/matlab/ ...
- Netty-案例 WebSocket与netty实现长连接案例(代码注释详解)
Netty 记录学习,开心学习,来源尚硅谷韩顺平netty视频 1 NettyServer package com.fs.netty.simple;import io.netty.bootstrap. ...
- 从入门到入土:Python爬虫学习|实例练手|爬取新浪新闻搜索指定内容|Xpath定位标签爬取|代码注释详解
此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...
- 从入门到入土:Python爬虫学习|实例练手|爬取百度产品列表|Xpath定位标签爬取|代码注释详解
此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...
- JS:冒泡排序 (思路+代码)详解
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 目录 文章目录 一 整体思路 二.使用步骤 1.第一步 2.第二步 总结:记忆口诀 一 .整体思路 => 相邻两个数之 ...
最新文章
- DeepMind 综述深度强化学习:智能体和人类相似度竟然如此高!
- 2018前端常见问题整理
- 国外centos服务器配置epel源
- D - Undoubtedly Lucky Numbers CodeForces - 244B(数论 )
- PHP编写命令行脚本和后台运行程序的注意事项
- 如何运行vue项目 ?(详解,建议收藏) ❤️
- 子域收集-fierce
- Nexus 的下载和部署
- java 有哪些框架_Java常用框架有哪些?这些框架有什么用?
- docker 网络模式之 macvlan模式
- 爬取mzitu图 线程 进程
- 服务器终端性能测试之iometer
- 嵌入式Linux为Qt定制keymap
- 一个排列是某些对象的有序组合,例如,3124 就是数字 1,2,3,4 的一种可能排列。 如果所有的排列按照数值或者字母序排序,我们称其为一个字典序。 0, 1, 2 的字典排列有:012 021 1
- 标准盒子模型与怪异盒子模型
- phpExcel导出excel文件浏览器一直不会出现下载框
- python快速注释html5_python注释代码块
- C语言视频教程-谭浩强版-小甲鱼主讲—P13
- 听闻华为停止社招,为什么我会感到一丝恐慌
- 阿里云 CDN 业务基于边缘容器的云原生转型实践
热门文章
- 服装行业常用术语(zt)
- Buuctf-[GXYCTF2019]BabyUpload
- 查有梁:天上有颗行星 名叫落下闳星
- Java IO流详尽解析
- matlab关于colorbar的整理(绘制不等间距colorbar, colorbar的大小位置调节, colorbar加单位等)
- 联想笔记本台式机专用系统 GHOSTXPSP3 v2013.06 海量驱动DVD版
- Spring Data Rest!五分钟帮我们实现Rest服务
- neso n810 i7 android 4.4,NESO推11.6寸平板/PC二合一产品E1210
- each的用法及while 的使用方法
- SQLAlchemy 1.3文档中文版 - 对象关系指南