归并排序时间复杂度分析

归并排序时间复杂度分析

归并排序

归并排序也叫(Merge sort)。

工作原理

  1. 将给定的数组一份为二
  2. 对两部分数组再使用归并排序使其有序
  3. 最后再将两部分数组合并

时间复杂度计算

1、首先可知

f ( n ) = 2 f ( n 2 ) + n           f(n)=2f(\frac{n}{2})+n \space\space\space\space\space\space\space\space\space f(n)=2f(2n)+n         
其中: f ( n ) 表 示 对 n 个 数 进 行 归 并 排 序 f(n)表示对n个数进行归并排序 f(n)n 2 f ( n 2 ) 表 示 将 n 个 数 分 成 两 部 分 分 别 进 行 归 并 排 序 2f(\frac{n}{2})表示将n个数分成两部分分别进行归并排序 2f(2n)n n 表 示 对 两 个 子 过 程 结 束 之 后 合 并 的 过 程 n表示对两个子过程结束之后合并的过程 n
2、推导
f ( n 2 ) = 2 f ( n 4 ) + n 2           当 n = n 2 时 f(\frac{n}{2})=2f(\frac{n}{4})+\frac{n}{2} \space\space\space\space\space\space\space\space\space 当n=\frac{n}{2}时 f(2n)=2f(4n)+2n         n=2n
f ( n 4 ) = 2 f ( n 8 ) + n 4           当 n = n 4 时 f(\frac{n}{4})=2f(\frac{n}{8})+\frac{n}{4} \space\space\space\space\space\space\space\space\space 当n=\frac{n}{4}时 f(4n)=2f(8n)+4n         n=4n
… …           …… \space\space\space\space\space\space\space\space\space          
f ( n 2 m − 1 ) = 2 f ( n 2 m ) + n 2 m − 1           当 n = n 2 m − 1 时 f(\frac{n}{2^{m-1}})=2f(\frac{n}{2^m})+\frac{n}{2^{m-1}} \space\space\space\space\space\space\space\space\space 当n=\frac{n}{2^{m-1}}时 f(2m1n)=2f(2mn)+2m1n         n=2m1n
3、由此可得:

f ( n ) = 2 f ( n 2 ) + n f(n)=2f(\frac{n}{2})+n f(n)=2f(2n)+n
= 2 × ( 2 f ( n 4 ) + n 2 ) + n = 2\times\bigg(2f(\frac{n}{4})+\frac{n}{2}\bigg)+n =2×(2f(4n)+2n)+n
= 2 2 f ( n 2 2 ) + 2 n =2^2f(\frac{n}{2^2})+2n =22f(22n)+2n
= 2 2 × ( 2 f ( n 8 ) + n 4 ) + 2 n =2^2\times\bigg(2f(\frac{n}{8})+\frac{n}{4}\bigg)+2n =22×(2f(8n)+4n)+2n
= 2 3 f ( n 2 3 ) + 3 n =2^3f(\frac{n}{2^3})+3n =23f(23n)+3n
… … ……
= 2 m f ( n 2 m ) + m n =2^mf(\frac{n}{2^m})+mn =2mf(2mn)+mn

当 m 足够大时(仅剩一个数字时),可使得 n 2 m = 1 \frac{n}{2^m}=1 2mn=1
求出 m = l o g 2 n m=log_2n m=log2n

代 入    f ( n ) = 2 m f ( n 2 m ) + m n    中 可 得 代入 \space\space f(n)=2^mf(\frac{n}{2^m})+mn \space\space 中可得   f(n)=2mf(2mn)+mn  
f ( n ) = 2 ( l o g 2 n ) f ( 1 ) + n ⋅ l o g 2 n f(n)=2^{(log_2n)}f(1)+n\cdot log_2n f(n)=2(log2n)f(1)+nlog2n
其 中    f ( 1 ) = 0 其中\space\space f(1)=0   f(1)=0
所 以 最 终    f ( n ) = n ⋅ l o g 2 n 所以最终\space\space f(n)=n\cdot log_2n   f(n)=nlog2n

  • 84
    点赞
  • 206
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值