冒泡排序是一种用时间换空间的排序方法,最坏情况是把顺序的排列变成逆序,或者把逆序的数列变成顺序。在这种情况下,每一次比较都需要进行交换运算。

举个例子来说,一个数列 5 4 3 2 1 进行冒泡升序排列,

第一次大循环从第一个数(5)开始到倒数第一个数(1)结束,比较过程:先比较 5 和 4,4 比 5 小,交换位置变成 4 5 3 2 1;比较 5 和 3,3 比 5 小,交换位置变成 4 3 5 2 1……最后比较 5 和 1,1 比 5 小,交换位置变成 4 3 2 1 5。这时候共进行了 4 次比较交换运算,最后 1 个数变成了数列最大数。
        第二次大循环从第一个数(4)开始到倒数第二个数(2)结束。进行3次比较交换运算。
        ……
        所以总的比较次数为 4 + 3 + 2 + 1 = 10次。

对于 n 位的数列则有比较次数为 (n-1) + (n-2) + ... + 1 = n * (n - 1) / 2,这就得到了最大的比较次数。

故使用 O(N^2) 表示排序的时间复杂度。

举个例子来说,如果 n = 10000,那么 n(n-1) / 2 = (n^2 - n) / 2 = (100000000 - 10000) / 2,相对 10^8 来说,10000 小的可以忽略不计了,所以总计算次数约为 0.5 * N^2。用 O(N^2) 就表示了其数量级(忽略前面系数 0.5)。

(SAW:Game Over!)

数据结构与算法 / 冒泡排序最坏情况下的时间复杂度解析相关推荐

  1. 下列各排序法中,最坏情况下的时间复杂度最低的是(**C** )A.希尔排序 B.快速排序 C.堆排序 D.冒泡排序

    下列各排序法中,最坏情况下的时间复杂度最低的是(C ) 希尔排序 A.快速排序 B.堆排序 C.冒泡排序 D.正确答案:C 题目解析: 堆排序最坏情况时间下的时间复杂度为 O(nlog2n) :希尔排 ...

  2. 算法练习——在有序序列(r1,r2,...,rn)中,存在序号i(1<=i<=n),使得ri=i。请设计一个分治算法找到这个元素。 要求算法在最坏情况下的时间性能为O(logn))

    算法练习 题目 答案 注意 题目 答案 #include<iostream> using namespace std; int find(int a[],int left,int righ ...

  3. 算法的最坏情况与最佳情况

    原文链接:http://www.nowamagic.net/librarys/veda/detail/2196 如果一个程序运行多次,则有时候它会快点儿,有时候它会慢点儿.算法也一样,在输入1的情况下 ...

  4. 设n个不同的整数排好序后存于T[1..n]中,若存在一个下标i(1≤ i ≤ n),使得T[i]=i。试设计一个有效算法找到这个下标,要求算法在最坏情形下的计算时间为O(log n)

    转自http://zmp1123.blog.163.com/blog/static/1193291592013314581911/ 设n 个不同整数排好序后存于T[0:n-1]中,若存在一个下标i,0 ...

  5. Leapfrog Triejoin:最坏情况下的最优连接算法

    介绍 leapfrog triejoin是商业数据记录系统 LogicBlox® 采用的一种新颖的连接算法,在不同的基准测试中表现出色.leapfrog triejoin论文的写作者认为这个算法,即使 ...

  6. 常见数据结构与算法整理总结(下)

    原文链接:https://www.jianshu.com/p/42f81846c0fb 这篇文章是常见数据结构与算法整理总结的下篇,上一篇主要是对常见的数据结构进行集中总结,这篇主要是总结一些常见的算 ...

  7. 两个鸡蛋测试:从100层楼往下扔鸡蛋,求最坏情况下确认保证鸡蛋可以不破的最大楼层所需次数

    最坏情况下求得最优解所需的次数 内容说明 本文是在看过<<妙解谷歌压箱底面试题:如何正确的从楼上抛鸡蛋>>一文以后做的总结,该文章对此问题描写的很详细,但是在拜读的过程中也花了 ...

  8. 连接定义点作用_最坏情况下最优连接(Worst-Case Optimal Joins)

    所谓最坏情况下最优连接(Worst-Case Optimal Joins),是一项关于数据库中连接操作的最新技术.给定若干表{R1, R2, ..., Rn},在它们之上的多表连接所能得到结果的数量上 ...

  9. 有一栋楼共100层,一个鸡蛋从第N层及以上的楼层落下来会摔破, 在第N层以下的楼层落下不会摔破。给你2个鸡蛋,设计方案找出N,并且保证在最坏情况下, 最小化鸡蛋下落的次数。

    有一栋楼共100层,一个鸡蛋从第N层及以上的楼层落下来会摔破, 在第N层以下的楼层落下不会摔破.给你2个鸡蛋,设计方案找出N,并且保证在最坏情况下, 最小化鸡蛋下落的次数.(假设每次摔落时,如果没有摔 ...

最新文章

  1. 微信为什么打不开html,微信打不开怎么回事 微信打不开解决方法
  2. 用好这 12 款 Chrome 扩展,让你的「新标签页」变得好看又实用
  3. request和response对象如何解决中文乱码问题?
  4. hive或mysql报错Too many connections
  5. 2017.09.21学习总结
  6. 7-5 日期问题面向对象设计(聚合二) (40 分)
  7. JVM源码分析之栈溢出完全解读
  8. ASP.NET MVC4中的异步控制器
  9. 通过一个实例掌握测试工具JMeter的一些基本概念
  10. 对应node版本_Node.js 应用故障排查手册 —— Node.js 性能平台使用指南
  11. 【颜纠日记】利用PS在原创图片上制作十字水印
  12. java读加密excel,JAVA读取加密的Excel文件
  13. [个人笔记] Zabbix配置钉钉群聊告警机制
  14. 2021年中国皮革行业市场现状分析,PU合成革趋势明显,汽车皮革是关键需求「图」
  15. 5月17号,记住这一天
  16. Matlab绘图技巧--如何去除图上方和右方刻度
  17. finalize机制
  18. 一文看懂DAG技术的现状与趋势
  19. 计算机关闭后剪切板的内容会消失,清除win10剪贴板历史记录,保证隐私数据不泄露...
  20. cocos creator 实现手机震动的效果

热门文章

  1. 配置HDFS HttpFS和WebHDFS
  2. WSL端口映射到win
  3. Spark On K8S 在有赞的实践与经验
  4. 【收藏】MySQL出现data too long for column ‘name‘ at row 1 解决
  5. notepad++安装
  6. scala方法定义示例
  7. Scala入门示例反编译分析代码执行流程
  8. Scala中的/,%,++,--
  9. Linux wc命令统计文件大小
  10. Python Django 使用cookie实现三天免登录及记住密码功能代码示例