问题标签 [n-way-merge]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
55658 浏览

html - DIFF 实用程序适用于 2 个文件。如何一次比较两个以上的文件?

因此,实用程序 Diff 就像我想要的 2 个文件一样工作,但我有一个项目需要一次与 2 个以上的文件进行比较,一次可能最多 10 个。这也需要将所有这些文件并排放置。我的研究并没有真正发现任何东西,vimdiff 似乎是迄今为止最好的,能够一次比较 4 个。

我的问题:是否有任何实用程序可以一次比较两个以上的文件,或者有一种方法可以破解 diff/vimdiff 以便它可以进行多重比较?我将要比较的文件相对较短,所以它不应该太慢。

提前致谢!

0 投票
2 回答
169 浏览

header - 仅显示 20 个左右文件之间的相似性?

假设我有一个充满 html 页面的目录。它们的页眉和页脚基本相同,但我希望只能看到所有页面中相同的部分。我想将其称为 n 向合并,但这不是它的本质,它只是在寻找所有文件的页眉和页脚之间的相似之处。

(和我的标题,我不仅仅指 <head> 标签,而是页面中相似的部分)。

注意:大约有 20 个 html 文件。

是否有执行此操作的工具的名称?

0 投票
2 回答
1281 浏览

diff - 是否有任何具有垂直比较的 n 路差异工具?

我开始使用diffuse,你可以用它来比较多个文件,但它有点没用,因为当你有20个文件需要一起比较时,你不能水平比较行,我想也许二十个文件中的一行水平显示的文件。

0 投票
3 回答
231 浏览

algorithm - 比较五种不同的来源

我需要编写一个函数来比较 2-5 个“文件”(实际上是 2-5 组数据库行,但概念相似),我不知道该怎么做。生成的差异应该并排显示 2-5 个文件。输出应显示添加、删除、更改和未更改的行,每个文件都有一列。

我应该使用什么算法来遍历行以保持低复杂度?每个文件的行数少于 10,000。我可能不需要外部合并,因为总数据大小在兆字节范围内。简单易读的代码当然也不错,但这不是必须的。

编辑:文件可能来自一些未知来​​源,没有“原始”可以与其他 1-4 个文件进行比较;所有文件都必须以某种方式与其他文件进行比较。

编辑 2:我,或者更确切地说是我的同事,意识到可以对内容进行排序,因为输出顺序无关紧要。这个解决方案意味着对应用程序的这一部分使用额外的领域知识,而且差异复杂度是 O(N) 并且代码不太复杂。这个解决方案很简单,当我关闭赏金时,我将忽略对此编辑的任何答案。但是,我将回答我自己的问题以供将来参考。

0 投票
0 回答
1702 浏览

python-2.7 - k路归并排序python

到目前为止我得到的输出:输入数组:

[[5, 10, 15, 20], [6, 3, 16, 9], [2, 9, 26, 40], [8, 22, 23, 24]]

[5]

[5, 6]

[5、6、2]

[5、6、2、8]

列表的大小是:4

在 1 次迭代中

[5、8、2、6]

在 0 次迭代中

[8、6、2、5]

heapified 数组是:[8, 6, 2, 5]

降序排列的数组 [8]

0 投票
2 回答
696 浏览

algorithm - 实现算法来合并排序的数组并返回它

我必须实现一个名为 Merge.java 的 Java 程序,其中包含以下算法实现:

  • 使用合并过程进行合并排序,合并前两个排序数组,然后合并第三个,依此类推。给定k个排序数组,每个数组有n 个元素,将它们组合成一个由 kn 个元素组成的单个排序数组。

  • 程序应该生成一个二维数组 data ,维度为k × n ,存储k个随机生成的长度为n的整数的排序数组。每个算法都应该将数据作为输入,并将所有k个列表合并为一个长度为k × n的数组结果。

然后我如何遍历数组并一一比较它们的元素并将它们按排序顺序插入新数组(res)中,这是按照问题的正确方法吗?

编辑添加:

都很有帮助..干杯..这是我到目前为止得到的:

但是,我的程序应该以二维形式返回它,并且数组可以超过两个:程序应该生成一个二维数组 data ,其维度为k × n ,存储k个随机生成的长度为n的整数的排序数组。每个算法都应该将数据作为输入,并将所有k个列表合并为一个长度为k × n的数组结果。下一步是什么?

0 投票
1 回答
253 浏览

list - 合并 K 个排序列表:效率

我收到了一项作业,要求我有效地将总共有 N 个元素的 K 个排序列表合并到一个排序列表中。我偶然发现的方法是使用最小堆对 K 列表中的元素进行排序或使用分而治之的方法(成对合并)。该线程中的评论表明,分治法的时间复杂度为 O(NK),而最小堆法的时间复杂度为 O(N log K),并且两者具有相同的空间复杂度。我还访问了许多其他线程,但我无法获得清晰的图片。

疑问和问题:

  1. 许多其他站点告诉分治法和最小堆方法都有 O(N log K) 的时间复杂度。这是真的还是假的?
  2. 两种方法的空间复杂度是否相同?如果不是,它们有何不同?
  3. 为什么对于不同长度的列表,最小堆方法比分治法更好?
  4. 我还发现您可以使用优先队列来解决问题。与这些相比如何?