本文参考动图来自公众号:吴师兄学算法。看动图,学算法,认准吴师兄~

冒泡算法方法原理

冒泡排序是一种简单的排序算法,它也是一种稳定排序算法(一般情况下,称某个排序算法稳定,指的是当待排序序列中有相同的元素时,它们的相对位置在排序前后不会发生改变。)其实现原理是重复扫描待排序序列,并比较每一对相邻的元素,当该对元素顺序不正确时进行交换(这个过程我们成为比较的次数)。一直重复这个过程(我们称之为比较的轮数),直到没有任何两个相邻元素可以交换,就表明完成了排序。算法过程如下图所示:

由于该排序算法的每一轮要遍历所有元素,轮转的次数和元素数量相当,所以时间复杂度是O(N^2) 

冒泡算法代码实现

public class DemoTest {public static void main(String[] args) {//定义一个数组int[] arr = {20, 34, 14, 75, 26, 72, 61};System.out.println("排序前:" + Arrays.toString(arr));/* 为什么是arr.lenth-1? 因为如果是arr.length会导致“数组下标越界”错误。* 冒泡算法每次比较的时候,都和下一个元素进行比较,* 到arr.length-1那个元素的时候,就会和arr.length那个元素比较,* 因此i只需要到arr.length-1就可以了*/for (int i = 0; i < arr.length-1; i++) {/* 内层循环是每轮比较次数* 为什么是arr.lenth-1-i? * 为什么-1:因为如果是arr.length会导致“数组下标越界”错误。* 冒泡算法每次比较的时候,都和下一个元素进行比较,* 到arr.length-1那个元素的时候,就会和arr.length那个元素比较,* 因此i只需要到arr.length-1就可以了;* 为什么-i:因为第一轮比较(此时i=0)我们需要比较arr.length-1次,* 第二轮比较的时候(此时i=1),我们已经比完一个元素了,剩下需要比较的次数应该减掉这个已经比完的也就是arr.length-1-1;* 第三轮比较的适合(此时i=2),我们已经比完两个元素了,剩下需要比较的次数应该减掉这两个已经比完的也就是arr.length-1-2;* 找规律可知,需要比较的次数应该是:arr.length-1-i;* */for (int j = 0; j < arr.length-1-i; j++) {if (arr[j] > arr[j+1]){int temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;}}}System.out.println("排序后:" + Arrays.toString(arr));}
}

冒泡排序原理+冒泡排序代码详解相关推荐

  1. DeepLearning tutorial(1)Softmax回归原理简介+代码详解

    FROM: http://blog.csdn.net/u012162613/article/details/43157801 DeepLearning tutorial(1)Softmax回归原理简介 ...

  2. DeepLearning tutorial(3)MLP多层感知机原理简介+代码详解

    FROM:http://blog.csdn.net/u012162613/article/details/43221829 @author:wepon @blog:http://blog.csdn.n ...

  3. DeepLearning tutorial(4)CNN卷积神经网络原理简介+代码详解

    FROM: http://blog.csdn.net/u012162613/article/details/43225445 DeepLearning tutorial(4)CNN卷积神经网络原理简介 ...

  4. Pytorch|YOWO原理及代码详解(二)

    Pytorch|YOWO原理及代码详解(二) 本博客上接,Pytorch|YOWO原理及代码详解(一),阅前可看. 1.正式训练 if opt.evaluate:logging('evaluating ...

  5. batchnorm原理及代码详解

    转载自:http://www.ishenping.com/ArtInfo/156473.html batchnorm原理及代码详解 原博文 原微信推文 见到原作者的这篇微信小文整理得很详尽.故在csd ...

  6. 人脸识别SeetaFace2原理与代码详解

    人脸识别SeetaFace2原理与代码详解 前言 一.人脸识别步骤 二.SeetaFace2基本介绍 三.seetaFace2人脸注册.识别代码详解 3.1 人脸注册 3.1.1 人脸检测 3.1.2 ...

  7. Pytorch | yolov3原理及代码详解(二)

    阅前可看: Pytorch | yolov3原理及代码详解(一) https://blog.csdn.net/qq_24739717/article/details/92399359 分析代码: ht ...

  8. 【OpenCV/C++】KNN算法识别数字的实现原理与代码详解

    KNN算法识别数字 一.KNN原理 1.1 KNN原理介绍 1.2 KNN的关键参数 二.KNN算法识别手写数字 2.1 训练过程代码详解 2.2 预测分类的实现过程 三.KNN算法识别印刷数字 2. ...

  9. Pytorch | yolov3原理及代码详解(一)

    YOLO相关原理 : https://blog.csdn.net/leviopku/article/details/82660381 https://www.jianshu.com/p/d13ae10 ...

  10. 深入浅出吃透多线程、线程池核心原理及代码详解

    一.多线程详解 1.什么是线程 线程是一个操作系统概念.操作系统负责这个线程的创建.挂起.运行.阻塞和终结操作.而操作系统创建线程.切换线程状态.终结线程都要进行CPU调度--这是一个耗费时间和系统资 ...

最新文章

  1. cloudemanager安装时出现ProtocolError: ProtocolError for 127.0.0.1/RPC2: 401 Unauthorized问题解决方法(图文详解)...
  2. python语言变量命名规则有什-以下选项中,符合Python语言变量命名规则的是_学小易找答案...
  3. 如何添加java环境变量_如何配置java环境变量
  4. 弹性盒模型--新版与旧版比较(1)
  5. Android开发学习笔记(10):NDK安装手顺及应用
  6. 关于java结构中描述正确的是_下列关于Java中类的构造方法的描述,正确的是()...
  7. VirtualBox桥接网络的简单配置,让虚拟机直接访问网络
  8. MVC.NET 出现诡异的 “IIS运行停止”
  9. 美国公司报告称2020年中国会非常穷 我学者驳斥[转]
  10. Linux基础之tr与重定向管道
  11. 遗传算法解决TSP问题
  12. Mybatis拦截器
  13. 编译原理c语言递归下降程序,编译原理(递归下降分析程序)
  14. android x86 5.1 .iso,凤凰OS5.1通用ISO1.5.0
  15. 《A Neural Layered Model for Nested Named Entity Recognition》
  16. pyecharts绘制K线
  17. Unable to establish SSL connection.
  18. java钢铁之心,洛克人 Dash 2 EPISODE 2(第二部) - 巨大的遗产[日]下载
  19. html5 多点触控 缩放,WebBrowser禁用触摸缩放
  20. 【搬运】黑苹果台式机机型选择指导 By 黑果小兵

热门文章

  1. 实现qq空间自动化点赞
  2. 中华人民共和国行政区划(五级):省级、地级、县级、乡级和村级。
  3. Go 开发关键技术指南 | 带着服务器编程金刚经走进 2020 年
  4. STL 格式解析--文本以及二进制格式
  5. HBase数据库结构、存储理解(举例解释、容易理解、深入浅出)
  6. android 登录界面 布局,Android基本布局和登录界面的设计
  7. Itunes降级(卸载+安装)+苹果软件降级安装(爱思+ITunes)
  8. 安装教程之postman下载及安装
  9. 机器视觉运动控制一体机应用|工件同心度检测
  10. 如何将卫星影像(高程)导出为西安80、北京54、国家2000坐标系