归并排序时间复杂度为什么是NlgN

归并排序算法

设归并排序所花时间为 T ( N ) T(N) T(N),其中 N N N 为输入数据长度

1、当 n == 1 时,返回,时间复杂度 1 1 1

2、排序好左边 N 2 \frac{N}{2} 2N 个元素,时间复杂度 T ( N / 2 ) T(N/2) T(N/2)

3、排序好右边 N 2 \frac{N}{2} 2N 个元素,时间复杂度 T ( N / 2 ) T(N/2) T(N/2)

4、归并排序好的左边和右边元素,时间复杂度 θ ( N ) \theta(N) θ(N)

根据上述算法有
T ( N ) = { 1 N = 1 2 T ( N / 2 ) + θ ( N ) N > 1 T(N)=\left\{\begin{aligned} & 1 & N = 1 \\ & 2T(N/2) + \theta(N) & N > 1 \\ \end{aligned}\right. T(N)={12T(N/2)+θ(N)N=1N>1
其中 θ \theta θ 表示阶, θ ( N ) \theta(N) θ(N) 表示一阶,可以使用 c N cN cN 表示,其中 c c c 为常数。

递归树

使用递归树对公式进行分解如下图所示:

在这里插入图片描述

最终可以分解为一个高度为 lg ⁡ N \lg N lgN,每一层之和为 c N cN cN 的二叉递归树, T ( N ) T(N) T(N) 即为树上每个节点之和,所以:
T ( N ) = c N lg ⁡ N = θ ( N lg ⁡ N ) + θ ( N ) T(N) = cN\lg N = \theta(N\lg N) + \theta(N) T(N)=cNlgN=θ(NlgN)+θ(N)
所以归并排序的时间复杂度为 θ ( N lg ⁡ N ) \theta(N\lg N) θ(NlgN)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值