【发布时间】:2013-10-21 20:46:48
【问题描述】:
我们知道合并排序对于以下算法的时间复杂度为 O(nlogn):
void mergesort(n elements) {
mergesort(left half); ------------ (1)
mergesort(right half); ------------(2)
merge(left half, right half);
以下实现的时间复杂度是多少?
(1)
void mergesort(n elements) {
mergesort(first quarter); ------------ (1)
mergesort(remaining three quarters); ------------(2)
merge(first quarter, remaining three quarters);
(2)
void mergesort(n elements) {
mergesort(first quarter); ------------ (1)
mergesort(second quarter); ------------(2)
mergesort(third quarter); ------------ (3)
mergesort(fourth quarter); ------------(4)
merge(first quarter, second quarter,third quarter, fourth quarter);
请详细说明您是如何找到复杂性的。
【问题讨论】:
-
这似乎是一道作业题。没问题,但至少解释一下你的想法。我们不是在这里给你一个准备好复制粘贴的答案。
-
我有一个 smilar ,和作业不一样的问题。我计算了递归关系,每次都得到nlogn的答案。觉得很奇怪。
标签: algorithm sorting merge time-complexity