算法基础:排序算法之冒泡排序
算法基础:排序算法之冒泡排序
实现:数列有序排序
思想:已知一个数列,令数列中相邻的两个元素一一做比较,按照小大的顺序(或从大到小的顺序),如果前一个数比后一个数大(或后一个数比前一个数大),则互换( 位置互换 ),否则就不做操作。以此类推,重复地进行直到没有相邻元素需要交换时,得出一个有序的排序数列。由于在整个排序过程中,每个元素就像是泡泡在水中往一个方向"浮动",故称之为冒泡排序。
工作原理:
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 |
算法基础:排序算法之冒泡排序相关推荐
- C语言基础排序算法-冒泡排序
C语言基础排序算法-冒泡排序 什么是冒泡排序? 顾名思义,这种排序方法就像水中的气泡一样,从底逐渐往上冒,一次前进一步.我们来看一个例子,看看到底是怎么冒泡的.假设有一个数组3,2,5,4,1,我们希 ...
- 基础排序算法详解与优化
文章图片存储在GitHub,网速不佳的朋友,请看<基础排序算法详解与优化> 或者 来我的技术小站 godbmw.com 1. 谈谈基础排序 常见的基础排序有选择排序.冒泡排序和插入排序.众 ...
- php四种基础排序算法的运行时间比较
/*** php四种基础排序算法的运行时间比较* @authors Jesse (jesse152@163.com)* @date 2016-08-11 07:12:14*/ //冒泡排序法 func ...
- 基本的排序算法php,php四种基础排序算法
原标题:php四种基础排序算法 曾经有网友问我关于面试题的问题,今天就发一个面试题笔试经常会出的排序算法,大家可以参考一下,如有问题可以给我留言. /** * php四种基础排序算法的运行时间比较 * ...
- 基础排序算法及其优化(Java)
文章预览: 一.基础排序算法 1.冒泡排序 冒泡排序的优化 1.添加flag 2.减少循环次数(后面已有序) 2.选择排序 选择排序优化 3.插入排序 插入排序的进阶 - 二分插入排序 注:冒泡排序v ...
- C语言基础排序算法-选择排序
C语言基础排序算法-选择排序 什么是选择排序? 选择排序(Selection sort)是一种简单直观的排序算法,第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从 ...
- 【Java】基础排序算法-插入排序
基础排序算法-------插入排序 实现过程: 插入排序的过程就像整理桥牌的过程:每次将待排元素中的第一个元素插入到有序区间的合适位置,为了给当前待排元素腾出位置,需要将有序区间内所有大于待排元素的其 ...
- 基础排序算法--冒泡法
基础排序算法–冒泡法 我认为的冒泡法就是一个一个挨着比,相邻的两个数比较,如果是从小到大排序,那么第一次走到最后的就是最大的数字,反之. 动图理解 代码解析 package ccc;import ja ...
- 在Object-C中学习数据结构与算法之排序算法
笔者在学习数据结构与算法时,尝试着将排序算法以动画的形式呈现出来更加方便理解记忆,本文配合Demo 在Object-C中学习数据结构与算法之排序算法阅读更佳. 目录 选择排序 冒泡排序 插入排序 快速 ...
- 算法---比较排序算法
在大批量的刷题之前,做好前期的准备工作,首先明白了时间复杂度和空间复杂度的计算方法,这个在我的上一篇博文里有提到,然后对经典排序算法做一个全面了解,2017.7.13,本文大部分内容引自http:// ...
最新文章
- 第四章 分支结构实验
- nova 之compute服务
- Android MVP
- 深度学习之基于卷积神经网络(VGG16CNN)实现海贼王人物识别
- 5.5 卷积、卷积定理和傅里叶变换的关系及其性质
- [渝粤教育] 西南科技大学 电子技术基础 在线考试复习资料
- Java工程师如何在Docker上进行开发
- Python标准库学习笔记7:数据持久存储与交换
- Keras搭建M2Det目标检测平台(转载)
- springboot 中jsp乱码设置
- 老男孩python最新_老男孩Python高级运维自动化实战 老男孩Python高级运维开发10期 全套Python视频教程...
- DHCP server和DHCP relay配置
- 2011刚上市的句子
- 无线网络组建之设备选型
- 蓝桥杯练习 数的读法
- 《C++Primer》学习笔记(11-12章)
- 手持gps坐标设置_学术 | 许其凤院士:GPS移动定位与移动网络定位精度的分析
- python二级题库最新
- ESP32蓝牙Bluetooth Controller API介绍
- 机器视觉-相机镜头光源介绍及选型-8.镜头选型
热门文章
- [ZZ]十招对付奢侈的女友
- 【开发日志】《鬼山之下》前 200 小时的制作思路分享
- 有趣的Android编程(1)九宫格解锁之二
- js使用DOM动态添加课程表 JavaScript
- chatgpt淘金热,你赚到钱了吗,高潜力案例分享一
- 网站建设如何选择专业的网站建设公司
- Node.js 官网入门教程(一) CommonJS 模块规范、Node.js REPL、console、CLI、exports
- education 的发音
- MUI调用照片以及裁剪和图库照片上传到服务器【MUI前端部分】
- 差分方程 matlab,差分方程的解法分析及MATLAB实现(程序)