当前位置: 首页 > news >正文

java算法的时间和空间复杂度_Java菜鸟教程 冒泡排序,时间复杂度和空间复杂度...

最近,笔者学习了冒泡排序,在此简单分享一下。

冒泡排序的原理:

对于一个数组,冒泡排序算法会比较相邻的两项的大小,并进行交换。

对每一对相邻的元素做同样的调整,如:第一个和第二个,第二个和第三个,第三个和第四个等等,以此类推。这样下来,最后的元素会是最大的。

重复以上步骤。如果有n个元素,则第一次循环进行n-1次,第二次循环进行n-2次,…………,第n-j次循环过后,会按大小顺序排出j个较大的数。

持续以上的步骤,直到没有任何一堆数字需要比较。

冒泡原理的简单应用:

任务:排序:4,9,10,5,7

cfbb4c8ee0262cf51365a40a387d861f.png

时间复杂度与空间复杂度

时间复杂度:时间复杂度是一个函数,定量描述了算法的运算时间,用大O符号来表示。在计算的时候,先找出算法基本操作的执行次数,即为T(n),然后找到它的同数量级,即为f(n),如果T(n)与f(n)的比值求极限可得到一个常数c,那么时间复杂度T(n)=O(f(n))。

上面的冒泡排序的时间复杂度计算(计算下方的for循环):T(n) = (4n+1)n,f(n) = n*n,c = 4,则时间复杂度为:T(n) = O(n*n)

空间复杂度:空间复杂度是运行完一个程序所需要的内存的大小。这里包括了存储算法本身所需要的空间,输入与输出数据所占空间,以及一些临时变量(比如上面的h)所占用的空间。一般而言,我们只比较额外空间,来比较算法的空间优越性。

上面的冒泡排序的临时变量所占空间不随处理数据n的大小改变而改变,则空间复杂度为O(1)。

优化冒泡排序:

如果给出的数据为1,2,3,4,5,6,7,9,8,要求进行排序,那么只需要进行一次交换即可。但此时程序仍然会继续检测到1为止。此时需要进行优化。

f6079c96632e2f4dd0012e7deb709876.png

以上如果有表述不当之处,还请指出更正!

2017-8-20   上午

折叠

相关文章:

  • Winforms: Windows 7中Taskbar的新效果(1)——概述
  • mysql 敏感字符_如何在MySQL上對SQL大小寫敏感的字符串進行比較?
  • Winforms: Windows 7中Taskbar的新效果(2)——Overlay Icon
  • 程序员不擅长沟通 ?——Leo网上答疑36
  • java多线程结束通知_Java多线程Condition实现等待/通知
  • CSS可以设置圆角的方块
  • java中关于抽象类的描述_Java中的抽象类
  • flex的linechart图中 hideDataEffect和gridDirection垂直线的冲突
  • java插件如何删除不了怎么办_如何在不重建的情况下在CKEditor中添加或删除插件?...
  • MIX10大会Windows Phone 7相关课程视频在线观看
  • 深圳java6年年薪_一个6年Java程序员的年终总结,写给还在迷茫中的你
  • 更新了下writer测试下
  • java https双向验证_Https双向验证与Springboot整合测试-人来人往我只认你
  • PHP如何获取回调地址中的数据_persistentNotifyUrl 对应的接收回调通知的php方法怎么写??...
  • 测试下Zoundry
  • 网络传输文件的问题
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • [译] 怎样写一个基础的编译器
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • 2018一半小结一波
  • Git同步原始仓库到Fork仓库中
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • JavaScript创建对象的四种方式
  • leetcode386. Lexicographical Numbers
  • opencv python Meanshift 和 Camshift
  • Python3爬取英雄联盟英雄皮肤大图
  • Python语法速览与机器学习开发环境搭建
  • Vue ES6 Jade Scss Webpack Gulp
  • windows-nginx-https-本地配置
  • 仿天猫超市收藏抛物线动画工具库
  • 工程优化暨babel升级小记
  • 诡异!React stopPropagation失灵
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 基于Android乐音识别(2)
  • 利用DataURL技术在网页上显示图片
  • 巧用 TypeScript (一)
  • 事件委托的小应用
  • 原生js练习题---第五课
  • nb
  • ​​快速排序(四)——挖坑法,前后指针法与非递归
  • # 透过事物看本质的能力怎么培养?
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • #define 用法
  • (1)(1.13) SiK无线电高级配置(六)
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (一)UDP基本编程步骤
  • (一)认识微服务
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (转)ORM
  • (转)Sublime Text3配置Lua运行环境
  • (转载)深入super,看Python如何解决钻石继承难题
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)