其实也就是点看算法导论的心得,感觉算法导论写的有点不详细的补充

快速排序 我的理解就是利用分治法 ,递归排序最后合并的排序,因为快速排序的最坏时间复杂度比较低所以快速被叫做快速排序如图

对于求快速排序的时间复杂度可以用递归树来做如图

递归式如下

简化后对于快速排序用二分法如下

n代表规模如数组有16个数那么n就代表16 cn代表n次的分开数组,再合并数组所用的时间因为是一重循环所以用cn代替 .

下面我们用递归树求时间复杂度(还有很多方法这只是其中一种如图)

cn这个图比较难理解。下面来说一下意思

T(n)=2T(n/2)+cn 这里的常数是cn也就意味着递归到这里要加的数是cn 比如n为16的时候 cn 就是 16c 递归第一次就要2T(n/2)+16c  也就是说16c也就是cn是T(n)的一部分 那么可能有人要说了2T(n/2) 哪去了。。答案是2T(n/2)迭代递归了,递归的时候每次都加上一个常数 8c,4c,2c 递归到最后 也就是T(1)=c 而很明显这种递归这种常数就如 这树一样发展,从而形成了该递归树。而这递归树所有节点的和就是该递归式的时间复杂度

理解了这一层就好说了 因为每次都是二分和都是父节点所以每一层和总的节点和都是cn

然后求出树的深度就行了。比如就n=1那么就一层 n= 2 就2层 n=4就三层 。 很显然2的树的深度次方 减去 1就是 n的值  既 树的深度 k = log2n + 1

既时间复杂度是每层的节点和 cn*k=cn*(log2n+1) = cnlog2n+n 忽略低阶项既 o(nlog2n)

简写为o(nlgn)

如何用递归树求快速排序时间复杂度相关推荐

  1. 递归树求递归算法时间复杂度

    开篇前言:为什么写这篇文章?笔者目前在学习各种各样的算法,在这个过程中,频繁地碰到到递归思想和分治思想,惊讶于这两种的思想的伟大与奇妙的同时,经常要面对的一个问题就是,对于一个给定的递归算法或者用分治 ...

  2. 如何用递归思想 求n的阶乘 C语言

    如何用递归思想 求n的阶乘 C语言 首先,我讲一下什么是递归? 一个函数在它的函数体内调用它自身称为递归调用,这种函数称为递归函数.执行递归函数将反复调用其自身,每调用一次就进入新的一层,当最内层的函 ...

  3. 用递归树求解递归算法时间复杂度

    文章内容.图片均来自极客时间. 递归代码复杂度分析起来比较麻烦.一般来说有两种分析方法:递推公式和递归树. 1 递推公式法 归并排序的递推公式是: merge_sort(p-r) = merge(me ...

  4. 遍历递归树求递推数列通项

    考虑K阶变系数线性递推方程: 现给定初值a1,a2,-,ak和n>k,要求编程打印an,an-1,-,ak+1的值 该问题用常规的迭代法非常容易解决,现在要考虑的是用遍历递归调用树的方法求解.n ...

  5. 递归树——分析递归算法的时间复杂度

    递归树 递归的思想就是,将大问题分解为小问题来求解,然后再将小问题分解为小小问题. 这样一层一层地分解,直到问题的数据规模被分解得足够小,不用继续递归分解为止. 如果我们把这个一层一层的分解过程画成图 ...

  6. 递归树: 如何借助树来求解递归算法的时间复杂度

    ------ 本文是学习算法的笔记,<数据结构与算法之美>,极客时间的课程 ------ 今天,来讲树这种数据结构的一种特殊的应用,递归树. 我们都知道,递归代码的时间复杂度分析起来很麻烦 ...

  7. 数据结构与算法之美笔记——基础篇(中):树,二叉树,二叉查找树,平衡二叉查找树,红黑树,递归树,堆

    树: A 节点就是 B 节点的父节点,B 节点是 A 节点的子节点.B.C.D 这三个节点的父节点是同一个节点,所以它们之间互称为兄弟节点.我们把没有父节点的节点叫作根节点,也就是图中的节点 E.我们 ...

  8. 算法学习笔记16:递归树

    递归树:如何借助树来求解递归算法的时间复杂度 今天,我们来讲这种数据结构的一种特殊应用,递归树. 我们都知道,递归代码的时间复杂度分析起来很麻烦.我们在<排序>那里讲过,如何利用递推公式, ...

  9. 27 | 递归树:如何借助树来求解递归算法的时间复杂度?

    目的 借助递归树来分析递归算法的时间复杂度 递归树 递归的思想就是将大问题分解为小问题来求解,然后再将小问题分解为小小问题.这样一层一层地分解,直到问题的数据规模被分解得足够小,不用继续递归分解为止. ...

最新文章

  1. 【渗透技术】一个渗透测试工具人是怎样操作的
  2. 我的世界linux服务器怎么加种子,我的世界怎么获得服务器种子?服务器种子获得方法介绍...
  3. 云效DevOps实践-代码评审
  4. vscode+TCC快捷编译c语言
  5. c语言延时函数delay_STM32中精确延时函数的实现
  6. oracle9i查等待事件,什么是Oracle9i中的一个特殊等待事件?
  7. Oracle EBS-SQL (BOM-19):主BOM与替代BOM互换.sql
  8. 2017 10 13
  9. android 商米扫码sdk,商米收银机|外接扫码枪问题:以T2为例
  10. 浅析JSP动态网页开发技术
  11. 计算机电源指示灯,为什么笔记本电脑电源指示灯一直闪?
  12. 参加了一场温州游资的婚礼,也太壕了
  13. python金额转换汉字为数字
  14. 【大学分析】985只要国家线?华东师范大学考研情况如何?
  15. JavaCV本地视频流通过帧图片添加文本进行字幕合成
  16. 判断闰年和平年的程序
  17. 测试服务器端口是否打开的几种办法
  18. 学计算机的考研考教育学好考吗,2011年考研心路:我的两年教育学考研总结
  19. 流体渐变_最新的10种Fluid Colors流体渐变壁纸制作方法
  20. 计算机的未来展望英语作文,展望未来英语作文5篇

热门文章

  1. Sql语句中的DDL语句
  2. 当ASRock 华擎 Deskmini 110 STX 装Intel 英特尔 i3 8100
  3. java计算机毕业设计流浪动物救助网站设计与实现源码+系统+数据库+lw文档+mybatis+运行部署
  4. 零基础学习CSS(12)——背景美化
  5. 主定理推导fn升级版
  6. windows 任务栏的图标变成白色
  7. 【网络技术】什么是CNI
  8. NumPy 秘籍中文第二版:十二、使用 NumPy 进行探索性和预测性数据分析
  9. 医学图像分割的半监督学习综述
  10. python平台_python平台(几个不错的python接单平台)