归并排序以及时间复杂度及Master Theorem(主定理)

目录

1.归并排序概念

2.算法的复杂度

3.主定理Master Theorem

3.1 Master Theorem概念

3.2 Master Theorem例子分析

4.利用Master Theorem求归并排序时间复杂度


        我们上一篇博客重点回顾了复杂度的概念,以及基本的复杂度计算方法。这篇博客我们利用归并排序Merge Sort算法带着大家深入计算复杂度。

1.归并排序概念

        假设我们有一个数组A,我们目标是sort(A)排序,整个算法流程为:首先把数组分成两部分,分完之后,针对每一个部分做排序,排序方法也是归并排序。我们做一个最后做一个整合,因为是排序过的两部分,从头部往后面依次比较即可。

        我们来想一下,这种排序算法的复杂度是多少?

2.算法的复杂度

        假设我们数组有n个数子,我们用T(n)表示该算法的时间复杂度,我们将原来问题拆分为2个子问题,是原来问题的1/2。最后需要n个操作合并排序。我们怎么表示它的时间复杂度呢?{先揭晓答案:T(n)= 2*T(n/2) +n   ----->   O(n*log n)  }

3.主定理Master Theorem

3.1 Master Theorem概念

        主定理对上面那种可以把一个问题分解为若干子问题上非常有价值,

        T(n)= 2*T(n/2) +n 是我们上面分析得到的结果,这个就非常符合主定理适用形式。我们怎么得到这种递归函数复杂度呢?下面的三个符号(O/Θ/Ω)

        主定理的内容可以解释如下所示:只需要分别计算左右二者大小即可。

这里写图片描述

3.2 Master Theorem例子分析

4.利用Master Theorem求归并排序时间复杂度

 

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值