请教,我这么理解递归实现的归并排序(MergeSort)的时间复杂度,对吗?

2018-12-23 12:44:37 +08:00
 NotreDame
递归深度 depth 是 logn,每个节点的数据处理的时间复杂度是 O(n),所以每层数据处理的时间复杂度是 O(n),然后每层的 O(n)*depth,即归并排序的时间复杂度为 O(nlogn)。
2032 次点击
所在节点    问与答
7 条回复
lsmgeb89
2018-12-23 13:22:11 +08:00
每个节点并不是 O(n)

但每层是 O(n)

那空间复杂度呢?
geelaw
2018-12-23 13:35:24 +08:00
可以这样考虑。
NotreDame
2018-12-23 15:02:43 +08:00
@lsmgeb89 节点不是 O(n)吗? 空间复杂度是辅助数组的空间 O(n)。
lsmgeb89
2018-12-23 15:10:06 +08:00
硬要说 O(n) 也没错。

辅助数组看你代码怎么写了,不同的代码分析略有不同。
maggch
2018-12-23 16:00:43 +08:00
T(n) = 2 T(n/2) + n
exonuclease
2018-12-24 10:16:18 +08:00
可以求解递归式或者用递归树
king0101
2018-12-24 11:32:15 +08:00
我一直也是这样理解的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/520167

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX