【发布时间】:2019-04-06 22:47:26
【问题描述】:
通过使用分治法,如果我们将一个数组重复分成两半,直到它们减小到两个大小 - 之后我们可以在 O(1) 时间内返回两者中的最小值。扩展该方法,为了将两个子数组 A 和 B 分别与它们的最小值 'a' 和 'b' 合并,我们可以在 O(1) 时间内直接返回它们的最小值——使合并步骤成为一个恒定时间操作。
这实质上意味着存在 logN 个级别,合并步骤的复杂度为 O(1)。那么这是否意味着使用该算法在未排序数组中找到最小值的复杂度为 O(logN)?
另外,请参阅此讨论。
Finding the minimum in an unsorted array in logarithmic time
【问题讨论】:
-
递归树 分支 乘以 2。您将拥有指数级的子数组。
标签: arrays algorithm time-complexity divide-and-conquer