冒泡排序

冒泡排序(Bubble Sort) 最为简单的一种排序,通过重复走完数组的所有元素,通过打擂台的方式两个两个比较,直到没有数可以交换的时候结束这个数,再到下个数,直到整个数组排好顺序。因一个个浮出所以叫冒泡排序。双重循环时间 O(n^2)

算法描述

  1. 比较相邻两个数据如果。第一个比第二个大,就交换两个数
  2. 对每一个相邻的数做同样1的工作,这样从开始一队到结尾一队在最后的数就是最大的数。
  3. 针对所有元素上面的操作,除了最后一个。
  4. 重复1~3步骤,直到顺序完成。

算法可视化

实现代码

算法实现Bubble.java

package sort.bubble;import sort.utils.SortUtils;/*** 冒泡排序* 英文名称: Bubble* @author: liuxiangyu* @date: 2020/7/30 00:17*/
public class Bubble {public static void main(String[] args) {// 获取随机数组int[] array = SortUtils.getArray(10000);long startTime = System.currentTimeMillis();for (int i = array.length - 1; i > 0; i--) {boolean didSwap = false;for (int j = 0; j < i; j++) {if (array[j] > array[j + 1]) {SortUtils.exchange(array, j, j + 1);didSwap = true;}}if (!didSwap){break;}}long endTime = System.currentTimeMillis();SortUtils.printlnArray(array);System.err.println("数组长度:" + array.length + "   用时:" + (endTime - startTime) +"毫秒");}}

工具类 SortUtils.java

package sort.utils;/*** @author: liuxiangyu* @date: 2020/7/29 00:02*/
public class SortUtils {/*** 获取一个随机数组* @return*/public static int[] getArray(int num){int[] intArray = new int[num];for (int i = 0; i < num; i++) {intArray[i] = new Double(Math.random()*num * 10).intValue();//intArray[i] = i;}return intArray;}/*** 打印数组* @param intArray*/public static void printlnArray(int[] intArray){for (Integer integer : intArray) {System.err.print(integer +" ");}System.err.println();}/*** 交换数组两个位置的值* @param array* @param i* @param j*/public static void exchange(int[] array,int i,int j){int temp = array[i];array[i] = array[j];array[j] = temp;}
}

阿里云服务器1折起:https://www.aliyun.com/minisite/goods?userCode=x4mpoaxe

排序算法-冒泡排序(可视化动图)相关推荐

  1. 排序算法——冒泡排序原理动图详解及实现

    主要涉及的是内部排序  交换排序   => 冒泡排序   快速排序  选择排序   直接选择排序   堆排序  插入排序   直接插入排序   希尔排序  归并排序 冒泡排序 1. 简介 冒泡排 ...

  2. 一文读懂Python版的十大经典排序算法(附动图演示)

    来源:大数据DT 本文约5200字,建议阅读10分钟 排序算法是<数据结构与算法>中最基本的算法之一.本文介绍10种常见的内部排序算法,及如何用Python实现. 排序算法可以分为内部排序 ...

  3. C语言八大排序算法,附动图和详细代码解释!

    文章来源:电子工程专辑.C语言与程序设计.竹雨听闲 一.前言 如果说各种编程语言是程序员的招式,那么数据结构和算法就相当于程序员的内功. 想写出精炼.优秀的代码,不通过不断的锤炼,是很难做到的. 二. ...

  4. 硬核!C语言八大排序算法,附动图和详细代码解释!

    来源 :C语言与程序设计.竹雨听闲等 一 前言 如果说各种编程语言是程序员的招式,那么数据结构和算法就相当于程序员的内功. 想写出精炼.优秀的代码,不通过不断的锤炼,是很难做到的. 二 八大排序算法 ...

  5. java快速排序直观演示代码,排序算法总结(含动图演示和Java代码实现)

    本文将围绕冒泡排序.桶排序.计数排序.堆排序.插入排序.并归排序.快速排序和选择排序,按照描述.时间复杂度(最坏情况).动态图展示和代码实现来讲解.本文默认排序为从小到大. 本文相关代码已上传至git ...

  6. 十大经典排序C++实现及动图演示

    0.算法概述 0.1 算法分类 十种常见排序算法可以分为两大类: 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序. 非比较类排序: ...

  7. 超详细八大排序+基数排序(图文并茂+动图演示+C语言代码演示)

    超详细八大排序+基数排序(图文并茂+动图演示+C语言代码演示) 插入排序-直接插入排序 插入排序-希尔排序 选择排序-直接选择排序 选择排序-堆排序 交换排序-冒泡排序 交换排序-快速排序-三种方法( ...

  8. C语言基础排序算法-冒泡排序

    C语言基础排序算法-冒泡排序 什么是冒泡排序? 顾名思义,这种排序方法就像水中的气泡一样,从底逐渐往上冒,一次前进一步.我们来看一个例子,看看到底是怎么冒泡的.假设有一个数组3,2,5,4,1,我们希 ...

  9. python棋盘覆盖问题_棋盘覆盖问题可视化动图——python

    棋盘覆盖问题可视化动图--python 棋盘覆盖问题是一个经典的分治法解决的问题,具体内容可以参照以下博主的解析 为了更好的理解该算法分治的过程 利用了python中的matplotlib库进行了该算 ...

最新文章

  1. 64% 的企业未实现智能化,5成公司算法工程师团队规模小于 10人,AI 工程师的机遇在哪里?...
  2. 模仿大脑:下一代计算机
  3. 浅谈RAID写惩罚(Write Penalty)与IOPS计算
  4. Mysql8.0 3306端口无法远程连接
  5. 我看Chrome超越IE的意义
  6. 《iVX 高仿美团APP制作移动端完整项目》03 推介信息及推荐商家分析及制作
  7. Matrix Subtraction(小米icpc邀请赛第一场)
  8. 渝粤教育 陕西师范大学 《初级微观经济学》作业
  9. mysql保存plc数据_MySQL空间数据的保存
  10. react native开发的新闻客户端
  11. 协同过滤算法(天池竞赛试题)
  12. 啊哈C语言4.9练习
  13. NXP JN5169 烧录器原理图(FT232RL,不带按键)
  14. 【贪玩巴斯】理工类科技检索(三)——「科技检索中的课题主题分析与例题全解」
  15. 创建Image图像的几种方法
  16. TNS-12555 TNS-12560错误
  17. JAVA组合框怎么添加加减乘除,[C#]组合框设计windows加减乘除简单计算器应用
  18. ASCII编码与UTF-8编码
  19. Web前端优化最佳实践及工具集锦(如减少页面加载时间)
  20. Chrome浏览器更新

热门文章

  1. ajax回调函数不能赋值
  2. commons-pool2中GenericObjectPoolConfig的maxTotal、maxIdle、minIdle属性理解
  3. 生成式模型和判别式模型区别
  4. 世界各知名大学开放课程资源
  5. 3、Opencv 进行区域的面积计算
  6. mysql数据库sql汉字数字排序_MYSQL数据库UTF8编码使用汉字拼音第一个字母排序的方法...
  7. 个体值0和31差多少攻击_个体值到底重不重要???
  8. 前端开发APP,从HBuilder开始~
  9. Python保存成pickle文件与读取
  10. 设计独特平面海报必须懂的实用技巧(收藏)