文章目录

  • 简介
  • 冒泡排序的原理
  • 冒泡排序算法的java实现
  • 冒泡算法的第一次改进
  • 冒泡算法的第二次改进
  • 冒泡排序的时间复杂度

简介

排序可能是所有的算法中最最基础和最最常用的了。排序是一个非常经典的问题,它以一定的顺序对一个数组(或一个列表)中的项进行重新排序。

排序算法有很多种,每个都有其自身的优点和局限性。

今天我们来学习最最简单的冒泡排序算法。

冒泡排序的原理

冒泡排序的原理很简单,我们想象一下一个一个的气泡上浮的过程。

假设我们有八个数字 29,10,14,37,20,25,44,15 要进行排序。

我们先用一个动画图来直观的观察一下整个冒泡排序的过程:

排序共进行八轮,每一轮都会做两两比较,并将较大的元素右移,就像冒泡一下。

一轮结束之后,八个元素中最大的那个元素44将会移动到最右边。

然后再重复其他的几轮。最终得到一个完全排序的数组。

也可以这样看:

第一轮是将八个元素中的最大值44交换移动到最右位置。
第二轮是将八个元素中的次大值37交换移动到最右位置。
以此类推。

看动画学算法之:排序-冒泡排序相关推荐

  1. 冒泡排序java代码_看动画学算法之:排序冒泡排序

    点击上方的蓝字关注我吧 程序那些事 简介 排序可能是所有的算法中最最基础和最最常用的了.排序是一个非常经典的问题,它以一定的顺序对一个数组(或一个列表)中的项进行重新排序. 排序算法有很多种,每个都有 ...

  2. 看动画学算法之:排序-基数排序

    文章目录 简介 基数排序的例子 基数排序的java代码实现 基数排序的时间复杂度 简介 之前的文章我们讲了count排序,但是count排序有个限制,因为count数组是有限的,如果数组中的元素范围过 ...

  3. 看动画学算法之:排序-count排序

    文章目录 简介 count排序的例子 count排序的java实现 count排序的第二种方法 count排序的时间复杂度 简介 今天我们介绍一种不需要作比较就能排序的算法:count排序. coun ...

  4. 看动画学算法之:排序-归并排序

    文章目录 简介 归并排序的例子 归并排序算法思想 归并排序的java实现 归并排序的时间复杂度 简介 归并排序简称Merge sort是一种递归思想的排序算法.这个算法的思路就是将要排序的数组分成很多 ...

  5. 看动画学算法之:排序-插入排序

    文章目录 简介 插入排序的例子 插入排序的java程序 插入排序的时间复杂度 简介 插入排序就是将要排序的元素插入到已经排序的数组中,从而形成一个新的排好序的数组. 这个算法就叫做插入排序. 插入排序 ...

  6. 看动画学算法之:排序-快速排序

    文章目录 简介 快速排序的例子 快速排序的java代码实现 随机快速排序的java实现 快速排序的时间复杂度 简介 快速排序也采用的是分而制之的思想.那么快速排序和归并排序的区别在什么地方呢? 归并排 ...

  7. 看动画学算法之:排序-选择排序

    文章目录 简介 选择排序的例子 选择排序的java代码实现 选择排序的第二种java实现 选择排序的时间复杂度 简介 选择排序就是从数组中选择出来最大或者最小的元素,然后将其和队首或者队尾的元素进行交 ...

  8. 如何快速找出找出两个数组中的_看动画学算法之:排序-快速排序

    简介:快速排序也采用的是分而制之的思想.那么快速排序和归并排序的区别在什么地方呢? 归并排序是将所有的元素拆分成一个个排好序的数组,然后将这些数组再进行合并. 而快速排序虽然也是拆分,但是拆分之后的操 ...

  9. 看动画学算法之:二叉搜索树BST

    文章目录 简介 BST的基本性质 BST的构建 BST的搜索 BST的插入 BST的删除 看动画学算法之:二叉搜索树BST 简介 树是类似于链表的数据结构,和链表的线性结构不同的是,树是具有层次结构的 ...

最新文章

  1. 谷歌浏览器出现方格xp系统_win10系统谷歌浏览器扩展程序打不开的解决方案
  2. Redis集群部署文档(Ubuntu15.10系统)
  3. java ftp上传文件_jaVA使用FTP上传下载文件的问题
  4. 贪心——FatMouse' Trade(hdu1003)
  5. 怎么用shell ssh,然后再exit?
  6. STM32F429HAL库定时器学习笔记
  7. jack插头_防水连接器航空插头特点
  8. 《算法设计》求单峰数组
  9. [转帖]从 2G 到 5G,手机上网话语权的三次改变
  10. 阿里云mysql导出表_mysql导出数据库表
  11. websphere liberty
  12. Rfb-Net(代码解读慢慢啃).
  13. Redis数据结构-sds
  14. 160x128JAva_GitHub - hanang128/X-SpringBoot: X-SpringBoot是一个轻量级的Java快速开发平台,能快速开发项目并交付【接私活利器】...
  15. 用matlab绘制三维图和三视图
  16. [转帖]彩色硬盘 关于西数硬盘 企业盘、黑盘、蓝盘、绿盘、红盘的区别
  17. JVM-调优《常见可视化工具与命令行的使用》
  18. 【论文阅读】Region Proposal by Guided Anchoring
  19. 计算机动画设计与影视制作,计算机动画设计及制作中的特效技术
  20. 板载2.5G网卡,新组装电脑无法联网,Win10系统显示“以太网 网络电缆被拔出”的解决方法

热门文章

  1. HDU1506(天然的笛卡尔树)
  2. 7.OD-字符串参考
  3. Linux中进程间传递文件描述符的方法
  4. OS- -I/O之盘和时钟
  5. 剑指offer--剪绳子
  6. 音视频技术开发周刊 | 234
  7. 直播预告:与九位专家聊聊Codec和AOM Summit
  8. 音视频技术开发周刊 | 161
  9. 腾讯抗黑灰产——自监督发现行话黑词识别一词多义
  10. 关于小程序·云开发峰会,你想get的干货全在这了!