博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
快速排序,冒泡排序时间复杂度推导
阅读量:6860 次
发布时间:2019-06-26

本文共 618 字,大约阅读时间需要 2 分钟。

快速排序时间复杂度分析:

数组长度为n
1,平均复杂度:
t(n) = cn + 2t(n/2)
= cn + 2(cn/2 + 2t(n/4)) = 2cn + 4t(n/4)
= 2cn + 4(cn/4 + 2t(n/8)) = 3cn + 8t(n/8)
= icn + 2^i * t(n/(2^i))
当 2^i = n时, i = logn, 排序结束,
t(n) = cnlogn + n*t(1) = o(nlogn)
2,最坏复杂度:
在完全有序的情况下[比如从小到大有序]
i从开始,j从末尾向中间移动,选第一个元素a[0]为key,
i找第一个比key大的元素,a[1]符合条件,停止移动。
j找第一个比key小的元素,直到a[1]都没找到,停止移动
判断 key < a[1]不交换,
数组被划分为两部分 a[0]和 a[1]~a[n]
如此,以后每次划分都只能划掉一个元素,由此,时间复杂度推导如下:
t(n) = cn + t(n-1) = cn + c(n-1) + t(n-2) ....
= cnn -ck + t(1) = cn^2 = 0(n^2)

冒泡排序的时间复杂度分析:

第一个元素:cn
第i个元素: cn
第n个元素: cn
总:n*cn = o(n^2)

参考文章如下:

转载于:https://www.cnblogs.com/timeObjserver/p/9492319.html

你可能感兴趣的文章
触屏网页设计初探 (二) - [移动开发]
查看>>
前端开发的历史和趋势(转摘阮一峰)
查看>>
Ubuntu 削减非 LTS 支持周期
查看>>
_实用的cms企业后台管理模板
查看>>
菜鸟看Redis(一)
查看>>
matplotlib.pyplot.plot()参数详解
查看>>
||PHP||关于=>和->以及::的用法
查看>>
最短路径问题
查看>>
Yii2中定义自己的Widget
查看>>
Aforge.net识别简易数字验证码问题
查看>>
JVM系列二:GC策略&内存申请、对象衰老
查看>>
MySQL 数据库备份策略:全备与增量备份
查看>>
Springboot的热部署
查看>>
Thinking in UML-1-为什么需要UML
查看>>
vs编译obj给delphi用
查看>>
过游戏保护NP或TP的几种方法和思路
查看>>
equals和hashcode为什么要一起重写
查看>>
模态与非模态对话框的问题
查看>>
httpclient 备注 控制连接时间及多线程错误
查看>>
地对地导弹地对地导弹地对地导弹
查看>>