【发布时间】:2014-07-26 17:58:55
【问题描述】:
一个测试题:
数组的划分不规则。 数组将被分成 2 个不相等的子序列:
-
(n/3)第一个子序列 -
(2/3)*n第二个子序列
计算归并排序的成本。
当分工不规律时,我该如何解决/处理此类问题?
mid = (start + last)/3;
mergesort (array , start , mid);
mergesort (array , mid+1 , last);
fusione (array , start , mid , last); cost = theta(n)
【问题讨论】:
-
应该还是 O(log n)
-
在正常情况下:我有 1 个序列,每个级别都除以 2。所以如果我去主定理,我意识到合并排序(2 个递归调用)+ fusione 的成本, 成本 Theta (n^e log n) 其中 (e = 1) 所以,我会得到 , Theta (n log n)。但是,如果我转向我的情况,我知道我将序列分成 2,但它们的大小并不相等。将原始序列分成 2 个不相等的大小,导致算法的运行速度比原始版本慢,因为每次得到不同的部分。
标签: algorithm sorting time-complexity mergesort divide-and-conquer