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

实现:数列有序排序

思想:已知一个数列,令数列中相邻的两个元素一一做比较,按照小大的顺序(或从大到小的顺序),如果前一个数比后一个数大(或后一个数比前一个数大),则互换( 位置互换 ),否则就不做操作。以此类推,重复地进行直到没有相邻元素需要交换时,得出一个有序的排序数列。由于在整个排序过程中,每个元素就像是泡泡在水中往一个方向"浮动",故称之为冒泡排序。

工作原理

1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2.对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。
3.针对所有的元素重复以上的步骤,除了最后一个( 在第一轮的比较中,一个最大的元素会被“浮”到最后 )。
4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

下面以这么一个数列{50.36, 464654, 52, 556.12, 96.5, 5451.3, 554, 82, 67.7, 50.36},实现对它的顺序排序。

50.36 464654.0 52.0 556.12 96.5 5451.3 554.0 82.0 67.7 50.36

Java版实现

package simple.callback.math.sort;/*** @program: psimple* @description:冒泡排序(Bubble Sort)* @author: Mr.Wang* @create: 2021年 01月 12日 星期二 23:29:02 CST**/
public class NumBubbleSort {public static void main(String[] args) {long start, time, end = 0;double nums[] = {50.36, 464654, 52, 556.12, 96.5, 5451.3, 554, 82, 67.7, 50.36};double sorts[];System.out.println(nums.length + "个浮点数示例测试结果:");start = System.currentTimeMillis();sorts = NumBubbleSort.bubbleSort(nums);end = System.currentTimeMillis();time = end - start;System.out.println("冒泡排序[start:" + start + "-end:" + end + "],用时" + time + "ms");System.out.print("推演排序后:");for (int i = 0; i < sorts.length; i++)System.out.print(sorts[i] + "\t");}// 冒泡排序(Bubble Sort)public static double[] bubbleSort(double[] nums) {double[] numbers = nums;//原数列System.out.print("\n冒泡排序原数列:");for (int z = 0; z < numbers.length; z++)System.out.print(numbers[z] + "\t");System.out.println();for (int i = 0; i < numbers.length; i++) {for (int j = 0; j < numbers.length - 1 - i; j++) {if (numbers[j] > numbers[j + 1]) {double temp = numbers[j];numbers[j] = numbers[j + 1];numbers[j + 1] = temp;//输出推演过程System.out.print("冒泡排序推演过程[" + i + "]");for (int z = 0; z < numbers.length; z++)System.out.print(numbers[z] + "\t");System.out.println();}}}return numbers;}
}

程序输出结果:

10个浮点数示例测试结果:冒泡排序原数列:50.36 464654.0    52.0    556.12  96.5    5451.3  554.0   82.0    67.7    50.36
冒泡排序推演过程[0]50.36    52.0    464654.0    556.12  96.5    5451.3  554.0   82.0    67.7    50.36
冒泡排序推演过程[0]50.36    52.0    556.12  464654.0    96.5    5451.3  554.0   82.0    67.7    50.36
冒泡排序推演过程[0]50.36    52.0    556.12  96.5    464654.0    5451.3  554.0   82.0    67.7    50.36
冒泡排序推演过程[0]50.36    52.0    556.12  96.5    5451.3  464654.0    554.0   82.0    67.7    50.36
冒泡排序推演过程[0]50.36    52.0    556.12  96.5    5451.3  554.0   464654.0    82.0    67.7    50.36
冒泡排序推演过程[0]50.36    52.0    556.12  96.5    5451.3  554.0   82.0    464654.0    67.7    50.36
冒泡排序推演过程[0]50.36    52.0    556.12  96.5    5451.3  554.0   82.0    67.7    464654.0    50.36
冒泡排序推演过程[0]50.36    52.0    556.12  96.5    5451.3  554.0   82.0    67.7    50.36   464654.0
冒泡排序推演过程[1]50.36    52.0    96.5    556.12  5451.3  554.0   82.0    67.7    50.36   464654.0
冒泡排序推演过程[1]50.36    52.0    96.5    556.12  554.0   5451.3  82.0    67.7    50.36   464654.0
冒泡排序推演过程[1]50.36    52.0    96.5    556.12  554.0   82.0    5451.3  67.7    50.36   464654.0
冒泡排序推演过程[1]50.36    52.0    96.5    556.12  554.0   82.0    67.7    5451.3  50.36   464654.0
冒泡排序推演过程[1]50.36    52.0    96.5    556.12  554.0   82.0    67.7    50.36   5451.3  464654.0
冒泡排序推演过程[2]50.36    52.0    96.5    554.0   556.12  82.0    67.7    50.36   5451.3  464654.0
冒泡排序推演过程[2]50.36    52.0    96.5    554.0   82.0    556.12  67.7    50.36   5451.3  464654.0
冒泡排序推演过程[2]50.36    52.0    96.5    554.0   82.0    67.7    556.12  50.36   5451.3  464654.0
冒泡排序推演过程[2]50.36    52.0    96.5    554.0   82.0    67.7    50.36   556.12  5451.3  464654.0
冒泡排序推演过程[3]50.36    52.0    96.5    82.0    554.0   67.7    50.36   556.12  5451.3  464654.0
冒泡排序推演过程[3]50.36    52.0    96.5    82.0    67.7    554.0   50.36   556.12  5451.3  464654.0
冒泡排序推演过程[3]50.36    52.0    96.5    82.0    67.7    50.36   554.0   556.12  5451.3  464654.0
冒泡排序推演过程[4]50.36    52.0    82.0    96.5    67.7    50.36   554.0   556.12  5451.3  464654.0
冒泡排序推演过程[4]50.36    52.0    82.0    67.7    96.5    50.36   554.0   556.12  5451.3  464654.0
冒泡排序推演过程[4]50.36    52.0    82.0    67.7    50.36   96.5    554.0   556.12  5451.3  464654.0
冒泡排序推演过程[5]50.36    52.0    67.7    82.0    50.36   96.5    554.0   556.12  5451.3  464654.0
冒泡排序推演过程[5]50.36    52.0    67.7    50.36   82.0    96.5    554.0   556.12  5451.3  464654.0
冒泡排序推演过程[6]50.36    52.0    50.36   67.7    82.0    96.5    554.0   556.12  5451.3  464654.0
冒泡排序推演过程[7]50.36    50.36   52.0    67.7    82.0    96.5    554.0   556.12  5451.3  464654.0
冒泡排序[start:1610466309202-end:1610466309213],用时11ms
推演排序后:50.36  50.36   52.0    67.7    82.0    96.5    554.0   556.12  5451.3  464654.0    
原数列 50.36 464654.0 52.0 556.12 96.5 5451.3 554.0 82.0 67.7 50.36
次序 ↓↓↓冒泡排序程序执行推演过程
1 50.36 52.0 464654.0 556.12 96.5 5451.3 554.0 82.0 67.7 50.36
2 50.36 52.0 556.12 464654.0 96.5 5451.3 554.0 82.0 67.7 50.36
3 50.36 52.0 556.12 96.5 464654.0 5451.3 554.0 82.0 67.7 50.36
4 50.36 52.0 556.12 96.5 5451.3 464654.0 554.0 82.0 67.7 50.36
5 50.36 52.0 556.12 96.5 5451.3 554.0 464654.0 82.0 67.7 50.36
6 50.36 52.0 556.12 96.5 5451.3 554.0 82.0 464654.0 67.7 50.36
7 50.36 52.0 556.12 96.5 5451.3 554.0 82.0 67.7 464654.0 50.36
8 50.36 52.0 556.12 96.5 5451.3 554.0 82.0 67.7 50.36 464654.0
9 50.36 52.0 96.5 556.12 5451.3 554.0 82.0 67.7 50.36 464654.0
10 50.36 52.0 96.5 556.12 554.0 5451.3 82.0 67.7 50.36 464654.0
11 50.36 52.0 96.5 556.12 554.0 82.0 5451.3 67.7 50.36 464654.0
12 50.36 52.0 96.5 556.12 554.0 82.0 67.7 5451.3 50.36 464654.0
13 50.36 52.0 96.5 556.12 554.0 82.0 67.7 50.36 5451.3 464654.0
14 50.36 52.0 96.5 554.0 556.12 82.0 67.7 50.36 5451.3 464654.0
15 50.36 52.0 96.5 554.0 82.0 556.12 67.7 50.36 5451.3 464654.0
16 50.36 52.0 96.5 554.0 82.0 67.7 556.12 50.36 5451.3 464654.0
17 50.36 52.0 96.5 554.0 82.0 67.7 50.36 556.12 5451.3 464654.0
18 50.36 52.0 96.5 82.0 554.0 67.7 50.36 556.12 5451.3 464654.0
19 50.36 52.0 96.5 82.0 67.7 554.0 50.36 556.12 5451.3 464654.0
20 50.36 52.0 96.5 82.0 67.7 50.36 554.0 556.12 5451.3 464654.0
21 50.36 52.0 82.0 96.5 67.7 50.36 554.0 556.12 5451.3 464654.0
22 50.36 52.0 82.0 67.7 96.5 50.36 554.0 556.12 5451.3 464654.0
23 50.36 52.0 82.0 67.7 50.36 96.5 554.0 556.12 5451.3 464654.0
24 50.36 52.0 67.7 82.0 50.36 96.5 554.0 556.12 5451.3 464654.0
25 50.36 52.0 67.7 50.36 82.0 96.5 554.0 556.12 5451.3 464654.0
26 50.36 52.0 50.36 67.7 82.0 96.5 554.0 556.12 5451.3 464654.0
27 50.36 50.36 52.0 67.7 82.0 96.5 554.0 556.12 5451.3 464654.0
结果: 50.36 50.36 52.0 67.7 82.0 96.5 554.0 556.12 5451.3 464654.0

算法基础:排序算法之冒泡排序相关推荐

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

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

  2. 基础排序算法详解与优化

    文章图片存储在GitHub,网速不佳的朋友,请看<基础排序算法详解与优化> 或者 来我的技术小站 godbmw.com 1. 谈谈基础排序 常见的基础排序有选择排序.冒泡排序和插入排序.众 ...

  3. php四种基础排序算法的运行时间比较

    /*** php四种基础排序算法的运行时间比较* @authors Jesse (jesse152@163.com)* @date 2016-08-11 07:12:14*/ //冒泡排序法 func ...

  4. 基本的排序算法php,php四种基础排序算法

    原标题:php四种基础排序算法 曾经有网友问我关于面试题的问题,今天就发一个面试题笔试经常会出的排序算法,大家可以参考一下,如有问题可以给我留言. /** * php四种基础排序算法的运行时间比较 * ...

  5. 基础排序算法及其优化(Java)

    文章预览: 一.基础排序算法 1.冒泡排序 冒泡排序的优化 1.添加flag 2.减少循环次数(后面已有序) 2.选择排序 选择排序优化 3.插入排序 插入排序的进阶 - 二分插入排序 注:冒泡排序v ...

  6. C语言基础排序算法-选择排序

    C语言基础排序算法-选择排序 什么是选择排序? 选择排序(Selection sort)是一种简单直观的排序算法,第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从 ...

  7. 【Java】基础排序算法-插入排序

    基础排序算法-------插入排序 实现过程: 插入排序的过程就像整理桥牌的过程:每次将待排元素中的第一个元素插入到有序区间的合适位置,为了给当前待排元素腾出位置,需要将有序区间内所有大于待排元素的其 ...

  8. 基础排序算法--冒泡法

    基础排序算法–冒泡法 我认为的冒泡法就是一个一个挨着比,相邻的两个数比较,如果是从小到大排序,那么第一次走到最后的就是最大的数字,反之. 动图理解 代码解析 package ccc;import ja ...

  9. 在Object-C中学习数据结构与算法之排序算法

    笔者在学习数据结构与算法时,尝试着将排序算法以动画的形式呈现出来更加方便理解记忆,本文配合Demo 在Object-C中学习数据结构与算法之排序算法阅读更佳. 目录 选择排序 冒泡排序 插入排序 快速 ...

  10. 算法---比较排序算法

    在大批量的刷题之前,做好前期的准备工作,首先明白了时间复杂度和空间复杂度的计算方法,这个在我的上一篇博文里有提到,然后对经典排序算法做一个全面了解,2017.7.13,本文大部分内容引自http:// ...

最新文章

  1. 第四章 分支结构实验
  2. nova 之compute服务
  3. Android MVP
  4. 深度学习之基于卷积神经网络(VGG16CNN)实现海贼王人物识别
  5. 5.5 卷积、卷积定理和傅里叶变换的关系及其性质
  6. [渝粤教育] 西南科技大学 电子技术基础 在线考试复习资料
  7. Java工程师如何在Docker上进行开发
  8. Python标准库学习笔记7:数据持久存储与交换
  9. Keras搭建M2Det目标检测平台(转载)
  10. springboot 中jsp乱码设置
  11. 老男孩python最新_老男孩Python高级运维自动化实战 老男孩Python高级运维开发10期 全套Python视频教程...
  12. DHCP server和DHCP relay配置
  13. 2011刚上市的句子
  14. 无线网络组建之设备选型
  15. 蓝桥杯练习 数的读法
  16. 《C++Primer》学习笔记(11-12章)
  17. 手持gps坐标设置_学术 | 许其凤院士:GPS移动定位与移动网络定位精度的分析
  18. python二级题库最新
  19. ESP32蓝牙Bluetooth Controller API介绍
  20. 机器视觉-相机镜头光源介绍及选型-8.镜头选型

热门文章

  1. [ZZ]十招对付奢侈的女友
  2. 【开发日志】《鬼山之下》前 200 小时的制作思路分享
  3. 有趣的Android编程(1)九宫格解锁之二
  4. js使用DOM动态添加课程表 JavaScript
  5. chatgpt淘金热,你赚到钱了吗,高潜力案例分享一
  6. 网站建设如何选择专业的网站建设公司
  7. Node.js 官网入门教程(一) CommonJS 模块规范、Node.js REPL、console、CLI、exports
  8. education 的发音
  9. MUI调用照片以及裁剪和图库照片上传到服务器【MUI前端部分】
  10. 差分方程 matlab,差分方程的解法分析及MATLAB实现(程序)