215得票10回答
分治算法和动态规划算法的区别

分治算法和动态规划算法有何区别?这两个术语有何不同之处?我不理解它们之间的差异。 请用一个简单的例子解释二者之间的任何差异以及它们似乎相似的原因。

116得票17回答
如何在两个已排序数组的并集中找到第K小的元素?

这是一个作业问题,已经介绍了二分查找: 给定两个数组,分别包含N和M个升序排列的元素,不一定唯一: 在两个数组的并集中查找第k小的元素的时间有效算法是什么? 据说需要 O(logN + logM) 的时间,其中 N 和 M 是数组长度。 让我们把这两个数组命名为 a 和 b。显然,我们可以...

32得票17回答
为什么二分查找是一种分治算法?

在一次考试中,我被问及二分查找是否是一种分治算法。我的回答是是,因为你将问题划分为较小的子问题,直到达到结果。 但考官问道,其中的征服(conquer)部分在哪里,而我无法回答。他们还不认同它实际上是一种分治算法。 但无论我去哪里,在网络上都说它是一种分治算法,所以我想知道为什么,以及其中...

31得票23回答
如何最优地将一个数组分成两个子数组,使得两个子数组中元素的和相等,否则报错?

如何最优地将一个数组分成两个子数组,使得两个子数组中元素的总和相等,否则返回错误? 示例 1 给定数组10, 20 , 30 , 5 , 40 , 50 , 40 , 15 它可以被分为10, 20, 30, 5, 40 并且50, 40, 15 每个子数组的元素总和为105。 例子2...

27得票7回答
在n log n时间内洗牌链表的算法

我正在尝试使用分治算法对链表进行洗牌,以线性对数(nlogn)的时间和对数(logn)的额外空间随机重排一个单向链表。 我知道可以像简单值数组一样执行 Knuth 洗牌,但不确定如何使用分治算法来实现。我的意思是,我应该将什么进行划分?我只是将每个节点划分到个体,然后使用某些随机值随机重新组...

23得票4回答
算法:分治和时间复杂度O(nlogn)之间有什么关系?

在我的算法和数据结构课程中,首先介绍了一种分治算法,即归并排序。 在完成作业时,我产生了几个问题。 任何使用分治范例实现的算法都具有O(nlogn)的时间复杂度吗? 是递归部分的方法使得运行时间为O(n^2)的算法压缩到O(nlogn)吗? 是什么让这样的算法在第一次运行时以O(nlog...

21得票2回答
为什么分治算法通常比暴力算法运行更快?

为什么分治算法经常比暴力算法运行更快?例如,要查找最近的点对。我知道你可以向我展示数学证明。但直觉上,为什么会发生这种情况?魔法吗? 从理论上讲,“分而治之总是比暴力求解更好”这种说法是否正确?如果不是,是否存在反例?

18得票8回答
分治与递归

我想知道分治技术是否总是将问题划分为相同类型的子问题?所谓的相同类型是指可以使用递归函数来实现。分治技术是否总是可以通过递归实现? 谢谢!

15得票3回答
如何找到任何整数的乘法分割?

我正在寻找一种高效的算法,用于计算任何给定整数的乘法分割。例如,12的分割数量为4个,分别是: 12 = 12 x 1 = 4 x 3 = 2 x 2 x 3 = 2 x 6 我已经阅读了维基百科文章,但那并没有给出生成这些分割的算法(它只讨论此类分割的数量,而且说实话,这对我来说也不是很...

13得票8回答
如何加速“分而治之”的XSLT模板,以替换字符串中的特定字符?

更新:我在此问题的回答中添加了一个几乎包含所有已提出建议的答案。下面提供的原始模板需要 45605ms 来完成一个现实世界的输入文档(关于脚本编程的英文文本)。在社区wiki答案中修改后的模板将运行时间降低到605ms! 我正在使用以下XSLT模板,将字符串中的一些特殊字符替换为它们的转义变...