目录

1.归并排序概念

2.算法的复杂度

3.主定理Master Theorem

3.1 Master Theorem概念

3.2 Master Theorem例子分析

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


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

1.归并排序概念

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

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

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

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

2.算法的复杂度

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

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

3.主定理Master Theorem

3.1 Master Theorem概念

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

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

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

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

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

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

3.2 Master Theorem例子分析

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

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

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

 

相关文章:

  • 2021-11-20
  • 2021-11-20
  • 2022-12-23
  • 2022-12-23
  • 2021-11-20
  • 2022-02-07
  • 2022-12-23
  • 2021-09-06
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-04-27
  • 2021-06-25
  • 2021-06-06
相关资源
相似解决方案