冒泡排序

冒泡排序是一种简单的排序算法。具体操作是重复地走访要排序的数列,没走过一个值,就会将前一个和该值比较,如果他们顺序错误,怎交换位置,否则不交换位置,直到没有错误顺序为止。因此就可以直到,对于n个数值来说,那么冒泡排序就需要O(n2)O(n^2)O(n2)次比较,最坏的情况下,需要O(n2)O(n^2)O(n2)次交换位置。
冒泡排序算法的具体操作步骤如下:

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

图片示意图:

  • 第一步(i=0): 第一个数和第二个数比较,发现第一个没有第二个大,顺序正确,不交换位置
  • 第二步(i=1): 第二个数和第三个数比较,发现第二个比第一个大,顺序错误,交换位置
  • 第三步(i=2): 第三个数和第四个数比较,发现第三个比第四个大,顺序错误,交换位置
  • 第四步(i=3): 第四个数和第五个数比较,发现第四个比第五个大,顺序错误,交换位置

动图解释:

动图可视化python程序,可以查看这里的文件。
使用python实现:

def bubble_sort(nums):n = len(arr)# 遍历所有数组元素for i in range(n):# Last i elements are already in placefor j in range(0, n-i-1):if arr[j] > arr[j+1] :arr[j], arr[j+1] = arr[j+1], arr[j]return nums
arr = [64, 34, 25, 12, 22, 11, 90]bubbleSort(arr)print ("排序后的数组:")
for i in range(len(arr)):print ("%d" %arr[i])

输出结果:

11
12
22
25
34
64
90

1. 冒泡排序算法详解相关推荐

  1. 十大经典排序算法-冒泡排序算法详解

    十大经典排序算法 十大经典排序算法-冒泡排序算法详解 十大经典排序算法-选择排序算法详解 十大经典排序算法-插入排序算法详解 十大经典排序算法-希尔排序算法详解 十大经典排序算法-快速排序算法详解 十 ...

  2. php详解冒泡排序,PHP冒泡排序算法详解

    在学习时我们经常会被老师拿几个数字来让大家进行各种排序,下面我来给各位同学介绍一下PHP冒泡排序算法,大家可直接合去给你老题师哈. 排序实现过程如下: 49 38 65 97 76 13 27 38 ...

  3. C++ 实现冒泡排序 算法详解

    原理 算法简介 冒泡排序:通过不断比较数组中两个数的位置,按照一定顺序(升序或者降序)将每个数字一点一点排好. 举例说明 需要排序数组: 1 2 3 4 5 要求将其从大到小重新排序,则步骤为: Ro ...

  4. 经典排序算法(1)——冒泡排序算法详解

    冒泡排序是一种交换排序. 什么是交换排序呢? 交换排序:两两比较待排序的关键字,并交换不满足次序要求的那对数,直到整个表都满足次序要求为止. 一.算法基本思想 (1)基本思想 冒泡排序的基本思想就是: ...

  5. 冒泡排序算法,C语言冒泡排序算法详解

    冒泡排序是最简单的排序方法,理解起来容易.虽然它的计算步骤比较多,不是最快的,但它是最基本的,初学者一定要掌握. 冒泡排序的原理是:从左到右,相邻元素进行比较.每次比较一轮,就会找到序列中最大的一个或 ...

  6. 排序算法(五)——堆排序算法详解及Python实现

    本文目录 一.简介 二.算法介绍 三.代码实现 排序算法系列--相关文章 一.简介 堆排序(Heap Sort)算法,属于选择排序类,不稳定排序,时间复杂度O(nlogn). 堆排序由Floyd和Wi ...

  7. 十大经典排序算法-桶排序算法详解

    十大经典排序算法 十大经典排序算法-冒泡排序算法详解 十大经典排序算法-选择排序算法详解 十大经典排序算法-插入排序算法详解 十大经典排序算法-希尔排序算法详解 十大经典排序算法-快速排序算法详解 十 ...

  8. 十大经典排序算法-快速排序算法详解

    十大经典排序算法 十大经典排序算法-冒泡排序算法详解 十大经典排序算法-选择排序算法详解 十大经典排序算法-插入排序算法详解 十大经典排序算法-希尔排序算法详解 十大经典排序算法-快速排序算法详解 十 ...

  9. 十大经典排序算法-选择排序算法详解

    十大经典排序算法 十大经典排序算法-冒泡排序算法详解 十大经典排序算法-选择排序算法详解 十大经典排序算法-插入排序算法详解 十大经典排序算法-希尔排序算法详解 十大经典排序算法-快速排序算法详解 十 ...

最新文章

  1. android 伸缩工具栏,看,这个工具栏能伸缩折叠——Android CollapsingToolbarLayout使用介绍...
  2. 独家 | 一文读懂Apache Flink技术
  3. java框架_2020年9个最流行的Java框架
  4. 如何使用纯 CSS 创建翻牌动画
  5. IDEA2019版最新配置SVN及上传教程-超详细图文详解
  6. 字母c语言定义为什么变量,C语言为什么要规定对所用到的变量要“先定义,后使用”...
  7. 智慧楼宇物联网公司En-trak获Pre-A 轮融资
  8. 关于《Linux多线程服务端编程:使用muduo C++网络库》的内容梳理
  9. SDUT OJ 3403 数据结构实验之排序六:希尔排序
  10. 操作系统(02326)第1章:操作系统概论
  11. 双轨制二叉树节点对象
  12. python温度转换程序改写代码举一反三_006 实例1-温度转换
  13. 基于php抑郁症自检测及初级自治疗网站
  14. Pytorch 之torch.nn初探
  15. vivo6.0系统设备最完美激活xposed框架的教程
  16. 河南高考成绩位次查询2021,2021年河南高考状元多少分是谁,河南高考状元名单资料...
  17. java-multimap使用
  18. Codeforces - Yura and Developers
  19. 迅雷同时下载的人数越多,BT下载越快的奥秘——另辟蹊径的P2P应用
  20. 冯·诺伊曼可以,你也可以!

热门文章

  1. OpenStack——编排(Heat)服务介绍与安装
  2. WPS表格小知识(一)
  3. 产业园区十大企业服务体系!
  4. 服务器显示尚未报告,wsus客户端尚未报告状态.doc
  5. 软考A计划-电子商务设计师-模拟试题卷二
  6. 东华大学复试基础题 94 求字符串的起始位置
  7. linux开启某个端口
  8. ABAP使用AMDP调用HANA存储过程
  9. 回顾games101中的SSAA和MSAA
  10. ORA-12541:TNS:no listener