思路

每次比较相邻两个元素大小,如果不是有序的就交换,遍历完当前的范围[start,end],end-1,继续比较[start, end-1]这个范围内的相邻的元素,如果不是有序那就交换,重复这个过程,直到范围内只有一个元素。优化,如果当前范围遍历完也没有需要交换的元素,说明这个列表是有序的,就不用在继续遍历了。

复杂度

时间复杂度:O(n)
空间复杂度:O(1)

代码

arr = [64, 34, 25, 12, 22, 11, 90]# Iterating adjacent two elements, swap if not sorted.
# Each time an iteration finished, the end index of the arr to be sorted minus one as the last element of the current arr is sorted.
# Repeate the above process, until no elements need to be swapped.
n = len(arr)for i in range(n):flag = Falsefor j in range(n-1-i):# j j+1if arr[j] > arr[j+1]:arr[j], arr[j+1] = arr[j+1], arr[j]flag = Trueif not flag:break
print(arr) # [11, 12, 22, 25, 34, 64, 90]

buble sort 冒泡排序相关推荐

  1. C++Bubble sort冒泡排序的实现算法(附完整源码)

    C++Bubble sort冒泡排序的实现算法法 C++Bubble sort冒泡排序的实现算法完整源码(定义,实现,main函数测试) C++Bubble sort冒泡排序的实现算法完整源码(定义, ...

  2. 排序 时间倒序_经典排序算法之冒泡排序(Bubble Sort)

    冒泡排序 ( Bubble Sort ) 冒泡排序,正如它的名字一样,未排序数组中的最大(小)值会依次往上浮.冒泡排序主要有两个基本步骤:相邻元素之间的比较 和 交换位置. 步骤分析: 令待排序序列为 ...

  3. 算法 - 冒泡排序(C#)

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! // - ...

  4. 排序方法整理Java - 冒泡排序、选择排序、插入排序、快速排序

    /*** 排序方法整理* @author zhyea**/ public class Sort {/*** 冒泡排序,从小到大.* 冒泡排序是比较相邻的两个元素,若顺序错误,则执行交换.循环走访序列直 ...

  5. 冒泡排序的多种写法、逻辑

    冒泡排序的多种写法.逻辑 本文提供全流程,中文翻译. Chinar坚持将简单的生活方式,带给世人! (拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 1 Bubble Sort - ...

  6. 简单排序——冒泡排序,选择排序,插入排序,对象排序

    2019独角兽企业重金招聘Python工程师标准>>> 1)冒泡排序 package sort; /**  * 冒泡排序,每次把数组最大值送到未排序部分的最末端  * @author ...

  7. 多维数组(冒泡排序,稀疏数组)

    多维数组 多维数组可以看成是数组的数组, 比如二维数组就是一个特殊的一维数组, 其每1个元素都是一个一维数组. 二维数组 int a[][] = new int[2][5]; 以上二维数组可以看成一个 ...

  8. 交换排序图解_排序算法学习分享(二)交换排序---冒泡排序与快速排序

    排序,也称为排序算法,可以说是我们学习算法的过程中遇到的第一个门槛,也是实际应用中使用得较为频繁的算法,我将自己对所学的排序算法进行一个归纳总结与分享,如有错误,欢迎指正! (一)排序的分类 排序算法 ...

  9. 【Java】五种常见排序之-----------冒泡排序

    冒泡排序: 原理: 将关键字较小的值不断地上浮,将关键字值较大的不断下沉: 时间复杂度:O(n^2) 空间复杂度:最优(即已经排好序)为0,平均空间复杂度为O(1); 核心代码: for(int i= ...

  10. 两个for做数据插入_冒泡排序、选择排序、插入排序

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

最新文章

  1. python之路---进程
  2. Cisco防火墙技术汇总[转贴]
  3. python+selenium自动化测试——浏览器驱动
  4. Oracle truncate table 与 delete tabel的区别(转)
  5. SAP Spartacus User form属性的运行时字段明细
  6. 面向对象进阶-反射(二)重要知识点
  7. CSS清除行内元素之间的HTML空白
  8. 函数调用过程(栈桢)
  9. 10 个在线正则表达式测试网站。
  10. docker 完成 redis集群搭建
  11. EP100的局部地址、逻辑地址和全局地址
  12. linux系统网络代理设置
  13. python中的sep函数_Python中sep是函数吗?该怎么使用?_后端开发
  14. 数据库事务的四大特性和隔离级别,一文带你看通透
  15. 音符起始点检测(音频节奏检测)(6)
  16. android 局域网 发现,局域网内android设备发现及通讯
  17. HEVC代码学习15:AMVP相关函数
  18. U盘制作windows启动安装盘后,U盘容量缩小
  19. GNU/Linux 初学之旅(转)
  20. matlab pdepe函数边界,科学网-使用MATLAB中pdepe函数求解一维偏微分方程-邓浩鑫的博文...

热门文章

  1. 计算机怎么使用远程桌面工具,远程桌面工具,教您如何使用远程桌面工具mstsc连接远程桌面...
  2. 【每日一题】LeetCode 458. 可怜的小猪(思路清奇)
  3. 传统java项目根据环境使用多配制文件策略
  4. 第二证券:高送转股票是什么?股票高送转之后股价会怎样?
  5. 果园机器人反思稿_《果园机器人》教学反思(精选5篇)
  6. linux共享内存是什么意思,linux系统监视器中的内存和共享内存分别指什么呀?
  7. 后PC时代科技投资新思路
  8. 【计算机毕业设计】汽车保养系统小程序
  9. Next.js+React+Node系统实战,搞定SSR服务器渲染-纪侯去国何时返
  10. ECNU Problem #3263 丽娃河的狼人传说(区间贪心)