当我们谈论分而治之时,我们总是使用递归。我已经知道分而治之是一种算法设计技术,但我有一个问题:
是否所有分而治之的算法递归,或换句话说,在所有递归中都采用分而治之的思想?
我糊涂了 。
答案 0 :(得分:4)
如果我正确理解你的问题.. 是Divide&征服算法本质上是递归的?是的!
按照定义
在实践中应用Divide and Conquer算法有三个步骤:
但如果你关注实现部分..然后递归(虽然更优雅和简单)并不是唯一的方法。
二元搜索是一个众所周知的分而治之范例,这里是算法的迭代实现。
//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);