关于什么是递推方程,这里就不再多说了。本文主要讲讲简单的递推方程来求解算法的时间复杂度

文章目录

  • 1. 递推方程的引入
    • 1.1 插入排序时间复杂度求解
    • 1.2 二分归并排序时间复杂度求解
  • 2 总结

1. 递推方程的引入

汉诺塔问题大家都知道,现在以汉诺塔问题来引入递推方程,可以参考文章离散数学中的数据结构与算法】十 汉诺塔

我们知道汉诺塔的递归算法对应的递推式子为:

T(n) = 2 T(n-1) + 1 ,T(1)=1 上述的式子,即为递推方程。

1.1 插入排序时间复杂度求解

设插入排序的基本运算是元素的比较,对规模为n的输入,最坏的情况下的时间复杂度为W(n),则可以列出递推方程式。

W(n) = W(n-1) + n-1 , W(1) = 0

很容易求出上述的W(n) = n(n-1) / 2

1.2 二分归并排序时间复杂度求解

设二分归并排序的最坏情况下时间复杂度W(n)

则由二分归并算法得出时间复杂度的式子:

W(n) = 2 * W(n/2) + n - 1,W(1) = 0

上述的式子并不是很好求解。可以用换元法求解(另n = 2k

然后再根据迭代求解得出W(n)=nlogn−n+1W(n)=n log n - n + 1W(n)=nlogn−n+1

2 总结

学会使用递推方程来求解算法的时间复杂度,使用各种技巧进行求解。并学会使用数学归纳法对结果进行验证。

【算法设计与分析】09 递推方程与算法分析相关推荐

  1. 算法设计与分析 1 递推与递归

    递推与递归 Fibonacci #include<stdio.h> #pragma warning (disabled:4996) #define MAX 100 int f[MAX];/ ...

  2. 【算法设计与分析】10 差消法化简高阶递推方程

    上一篇文章使用递推方程的方法求解了插入排序和二分归并的时间复杂度,本文来求解快速排序的时间复杂度,同样是利用了递推方程法,但是求解该递推方程的方法与以前不一样:差消法 文章目录 1. 快速排序的时间复 ...

  3. 算法设计与分析第一章递推算法

    算法设计与分析 第一章 递推算法 1.概述 在**已知条件**和**所求问题**之间总存在着某种相互联系的关系,如果可以找到前后过程之间的数量关系(即递推式),那么,从**问题出发逐步推到已知条件** ...

  4. 算法设计与分析:芯片测试问题、选择问题详解

    芯片测试问题 有n片芯片,已知其中好芯片比坏芯片至少多1片.现在需要通过测试从中找出1片好芯片.测试的方法是:将2片芯片放到测试台上,2片芯片互相测试并报告测试结果:"好"或者&q ...

  5. 算法设计与分析_算法设计与分析(第2版)第2章分治策略回顾

    YI时间|外刊|MM-DFW|机器学习系列 点击上方蓝字,关注给你写干货的松子茶 分治策略是通用算法设计技术之一,很多有效的算法是它的特殊实现,顾名思义就是分而治之.一个问题能够用分治法求解的要素是 ...

  6. 【算法设计与分析】14 分治算法的一般描述和分析方法

    本文主要描述分治算法的一般描述和分析方法.衔接上一篇文章:[算法设计与分析]13 分治策略的设计思想 文章目录 1 分治算法的一般性描述 1.1 分支算法的时间分析 1.2 两类常见的递推方程与求解方 ...

  7. 【算法设计与分析】13 分治策略的设计思想

    算法中很多方法都是可以采用分治策略进行设计与优化,那么什么是分治策略?如何使用分治策略进行算法的设计与分析? 文章目录 1. 分治策略的基本思想 1.1 二分检索的设计思想 1.2 二分归并排序的设计 ...

  8. 循环赛日程表非递归Java_王晓东《算法设计与分析》课件.ppt

    <王晓东<算法设计与分析>课件.ppt>由会员分享,可在线阅读,更多相关<王晓东<算法设计与分析>课件.ppt(356页珍藏版)>请在人人文库网上搜索. ...

  9. 算法设计与分析(python版)-作业一

    参考教材:算法设计与分析(Python版)         作者:王秋芬 1 . 容易 (4分)2 n=O(100n ^2) 错误 2 . 容易 (3分)10=θ(log10) 正确 3 . 容易 ( ...

最新文章

  1. EasyUI combobox 中文无法检索最终解决方案!
  2. JavaSE学习52:细说多线程之Thread类和Runable接口
  3. java jdk目录_Java开发工具包JDK安装和目录介绍
  4. koa-static使用时报Unexpected token function
  5. 算法的优缺点_机器学习算法优缺点 amp; 如何选择
  6. 广东职业教育信息化研究会2019年会暨区块链专题研讨会
  7. php java c_当PHP、Java、C、C++ 这几种编程语言变成汽车是什么样的场景?
  8. jquery操作select - 代码合集
  9. 探索高效jQuery的奥秘
  10. centos yum 安装mysql
  11. jsp中文乱码现象解决办法
  12. Elasticsearch 创建索引 Java 实现
  13. 阿里云数据迁移工具解决方案:华为云迁移到阿里云
  14. dbt2 mysql_mysql压力测试工具-DBT2 Benchmark Tool下载0.37.50.14-西西软件下载
  15. Android蓝牙音乐获取歌曲信息
  16. Altium designer (AD)中如何设置区域规则和器件规则
  17. 本地计算机 feifei pc,局域网中其它计算机对共享打印机的访问方法
  18. 微信返利机器人开发制作
  19. NAND Flash SSD 是如何生产出来的?
  20. C++ 第八节数据结构 第七节 ——二叉搜索树 AVL树 红黑树(底层原理图+模拟实现)

热门文章

  1. 第四十六期:关于云存储的五大优势
  2. 数字图像处理(拓展)
  3. 玩转oracle 11g(39):oracle11g密码过期后的解决方法
  4. linux下zabbix安装
  5. docker小实战和应用
  6. display:table-cell的集中应用
  7. 【网络流24题】餐巾计划问题(最小费用最大流)
  8. PAT——1027. 打印沙漏
  9. 做一个常规的banner图——负边距的使用、banner图的拼法
  10. 【原】UIView实现点击着重效果的解决方案