比较分而治之与递归
Posted
技术标签:
【中文标题】比较分而治之与递归【英文标题】:Compare divide and conquer with recursion 【发布时间】:2012-02-25 22:55:27 【问题描述】:当我们谈论分治时,我们总是使用递归。我已经知道分治是一种算法设计技术,但我有一个问题:
所有的分治算法都是递归的,或者换句话说,所有的递归都采用了分治思想吗?
我糊涂了 。
【问题讨论】:
你问了两个不同的问题,请澄清 【参考方案1】:如果我正确理解您的问题.. 所有分治算法本质上都是递归的吗?是的!
根据定义
在实践中应用分治算法分为三个步骤:
将问题分解为一个或多个子问题。 通过递归解决子问题来征服子问题。如果子问题 尺寸足够小,但是,只需解决一个子问题 直截了当的方式。 将子问题的解决方案合并到 原来的问题。但是如果你关心实现部分..那么递归(虽然更优雅和简单)不是唯一的方法。
二分搜索是一个众所周知的分治范例,这里是算法的迭代实现。
//binary search for x, in array A[1 .. N]
min := 1;
max := N;
repeat
mid := (min+max) div 2;
if x > A[mid] then
min := mid + 1;
else
max := mid - 1;
until (A[mid] = x) or (min > max);
【讨论】:
以上是关于比较分而治之与递归的主要内容,如果未能解决你的问题,请参考以下文章