思路:冒泡排序 就是把大的数一个个沉到下面,当然也可以是把小的数一个个浮到上面。

   在最外层需要比较n-1次,因为n-1个大的数被沉到了下面,剩下一个自然就是最小的数了。

   在这n-1次的里层,还需要亮亮相互比较,这次比较的次数是 n-1-i次,这也比较好理解,每当一轮最大的数沉到下面,之后它就不需要再拿出来比较了,自然比较的次数就需要再 -i。  在里层循环要做的也很简单,两两比较,然后如果前面的比后面一个大,交换位置,否则不做操作。

   如果想把小的一个个浮到上面,思路一致,代码如下:

    可以将以上代码优化一下,降低它的时间复杂度。

    无非就是在里层循环之前加一个标识符,一开始赋值0,在里层判断里对标识符进行加操作。这样如果在某一次进行里层循环时,标识符的值没有变,就说明,两两比较的结果是正确的,不需要调换位置,即已经排序好,所以没必要继续循环下去,即时退出即可。

转载于:https://www.cnblogs.com/xinjydeshow/p/5851979.html

排序算法02--冒泡排序相关推荐

  1. 算法基础:排序算法之冒泡排序

    算法基础:排序算法之冒泡排序 实现:数列有序排序 思想:已知一个数列,令数列中相邻的两个元素一一做比较,按照小大的顺序(或从大到小的顺序),如果前一个数比后一个数大(或后一个数比前一个数大),则互换( ...

  2. Java排序算法:冒泡排序

    Java排序算法:冒泡排序 //创建数组并赋值int[] data = new int[] {11,10,55,78,100,111,45,56,79,90,345,1000};for(int i=0 ...

  3. 排序算法:冒泡排序、插入排序、选择排序、希尔排序

    相关博客: 排序算法:冒泡排序.插入排序.选择排序.希尔排序 排序算法:归并排序.快速排序 排序算法:桶排序.计数排序.基数排序 排序算法:堆排序 十大排序算法小结 一.冒泡排序: 1.算法原理: 冒 ...

  4. golang 排序_常用排序算法之冒泡排序

    周末无事,带娃之余看到娃娃在算数,想到了排序-尝试着把几种常用的排序算法跟大家聊一聊,在分析的后面我会用GoLang.PHP和JS三种语言来实现下. 常见的基于选择的排序算法有冒泡排序.插入排序.选择 ...

  5. 十大排序算法:冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序

    冒泡排序.选择排序.插入排序.希尔排序.归并排序.快速排序.堆排序.计数排序.桶排序.基数排序的动图与源代码. 目录 关于时间复杂度 冒泡排序 选择排序 插入排序 希尔排序 归并排序 快速排序 堆排序 ...

  6. 数据结构与算法:十大排序算法之冒泡排序

    数据结构与算法:十大排序算法之冒泡排序 package array;import java.util.Arrays;//冒泡排序 //1.比较数组中两个相邻的元素,如果第一个数比第二个数大,我们就交换 ...

  7. 【排序算法】冒泡排序、简单选择排序、直接插入排序比较和分析

    [排序算法]冒泡排序.简单选择排序.直接插入排序比较和分析 写在前面: 本文简单介绍了冒泡排序.简单选择排序.直接插入排序,并对这三种排序进行比较,入参都是80000个随机数,比较算法耗时.进一步,我 ...

  8. 排序算法(1)冒泡排序

    排序算法(1)冒泡排序 原理: 1.比较相邻的元素.如果第一个比第二个大,就交换他们两个. 2.对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数. 3. ...

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

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

  10. 冒泡和快速排序的时间复杂度_常用排序算法之冒泡排序

    周末无事,带娃之余看到娃娃在算数,想到了排序-尝试着把几种常用的排序算法跟大家聊一聊,在分析的后面我会用GoLang.PHP和JS三种语言来实现下. 常见的基于选择的排序算法有冒泡排序.插入排序.选择 ...

最新文章

  1. MPB:扬大林淼组-瘤胃内容物样本中有机酸的定量分析 (高效液相色谱)
  2. QA: What's the difference between CustomControl and UserControl?
  3. python小项目案例-python_flask小项目实例-编一个小网站
  4. PHP mysql 事务处理实例
  5. CentOS6.5菜鸟之旅:安装VirtualBox4.3
  6. shiro进行散列算法操作
  7. 如何使用 Java 生成二维码?
  8. map的用法-HD 1029Ignatius and the Princess IV
  9. 安装meme_我见过的最好JavaScript Meme,详细说明了
  10. TFS Training for Kunlun bank (http://www.klb.cn/) 微软研发流程(ALM)管理培训会议(昆仑银行) 2016.09.21...
  11. 操作系统(14)Linux最常用命令(能解决95%以上的问题)
  12. 带你快速了解ISO27001信息安全管理体系认证
  13. 数码相机成像原理CCD和CMOS及相机模组分析
  14. 大型分布式网站架构如何设计
  15. 微信小程序初始化NPM
  16. github windows系统监控_你需要的:Windows | 精品软件集
  17. CDA携手云网德国公司共同打造数据精英的国际化舞台
  18. 手把手安装Windows11虚拟机
  19. 获取电商网站主图和详情图的浏览器插件
  20. overflow(溢出)属性的5个值

热门文章

  1. 机器学习中的无监督学习_无监督机器学习中聚类背后的直觉
  2. 在sublime中直接运行python代码
  3. 银行喜欢全额还款的客户,还是喜欢最低还款客户?--编辑
  4. 也说电影《魔比斯环》
  5. 自主学习 提问的智慧——学习中遇到难题怎么破?
  6. 使用UltraEdit来拷贝粘贴二进制
  7. Postman调用阿里云HTTPS动态注册接口(一型一密)
  8. react登录页面_React 实现路由拦截
  9. springboot jwt token前后端分离_为什么要 前后端分离 ?
  10. java 获取注释_Java面试题Java语言有哪些注释的方式?