Arrays 数组差异作为一系列操作

Arrays 数组差异作为一系列操作,arrays,algorithm,array-difference,set-difference,Arrays,Algorithm,Array Difference,Set Difference,简而言之:我有两个可能不同的数组,我希望将差异/转换作为一系列“操作”(添加和删除)。也就是说,在一个基本示例中: Current: [a, b, d] Desired: [a, b, c, d] Actions: Add c in position 2 基本上,说明是如何转换当前数组,使其具有与所需数组相同的成员和顺序。对于我的应用程序,每次更改都会触发更新UI等的事件,因此,如果操作不是“冗余”的话,这将是非常可取的:也就是说,上述操作可能是删除d、添加c@2、添加d@3,但这将在系统中的

简而言之:我有两个可能不同的数组,我希望将差异/转换作为一系列“操作”(添加和删除)。也就是说,在一个基本示例中:

Current: [a, b, d]
Desired: [a, b, c, d]
Actions: Add c in position 2
基本上,说明是如何转换当前数组,使其具有与所需数组相同的成员和顺序。对于我的应用程序,每次更改都会触发更新UI等的事件,因此,如果操作不是“冗余”的话,这将是非常可取的:也就是说,上述操作可能是
删除d、添加c@2、添加d@3
,但这将在系统中的其他地方导致大量不必要的处理

也许可以作为另一个例子来帮助说明:

Current: [a, b, d]
Desired: [b, c, d, a]
Actions: remove a, add c @ 1, add a @ 3
我想这是以前已经解决过的问题,但是搜索它有点困难,因为“数组差异”并不能给出正确的结果


如果这很重要的话,我会用Javascript实现它,但我想这个算法与语言无关。

这确实存在,它被称为。基本算法不记得编辑的类型,但很容易修改

编辑距离的一种类型是。这个维基百科页面包含一些您可能会发现有用的代码片段


可能也很有用。

您正在寻找类似
diff
实用程序的工具吗?啊,当然!看起来Hirschberg算法可能更接近我想要的。谢谢你让我走上了正确的道路。这就是堆栈溢出的作用;-)