问题标签 [array-algorithms]

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 投票
2 回答
189 浏览

sum - 在数组中求和的算法?

假设您有一些数组,其中包含您知道都是正数且小于数字 N 的元素。

有人可以给我一个算法的一般高级描述,以找出数组中是否存在某个子集,其中所有元素加起来正好等于 N?

它不需要特别高效;我正在使用的设备非常小。

0 投票
1 回答
1247 浏览

c++ - 在 C++ 中实现蛮力

我有一个问题涉及优化包含 2 名玩家的游戏。所以我们有一个有许多边和一些顶点的无向连通图。每个玩家都必须删除边,如果一个顶点被孤立,他的分数会增加一,然后你必须删除另一条边。该图以所谓的“邻接矩阵”表示。对于数组中的每个顶点,两个顶点之间都有一个连接例如,如果我们有一个三角形,我们有以下数组:

0 1 1 第一行

1 0 1 第二行

1 1 0 第三排

行对应于顶点,列对应于它与其他顶点的可能连接。我们被分配使用递归函数来应用蛮力。我花了很多心思来编写这个函数的代码。我实现了一些代码并编译并运行它。我完全不知道为什么它不起作用。我的这个功能的代码:

矩阵::矩阵() {

}

}

}

bestescore 和 slechtstescore 是荷兰语的最佳和最差分数。berekenScore 调整删除边后获得的点数并将其保存在 huidigScore 中。所以基本上是 0、1 或 2。

我在 int main 中调用这个函数:

我使用以下邻接矩阵运行它:

5

0 1 1 1 1
1 0 1 0 0
1 1 0 0 0
1 0 0 0 0
1 0 0 0 0

它只输出“score”5次,所以它似乎忽略了函数中的for循环,bestescore曾经设置为几百万值,然后设置为5。我不是一个很有经验的程序员,所以我可能只是错过了什么..??

0 投票
1 回答
72 浏览

algorithm - 需要找到数组的第一行与其余行之间的最小差异

好吧,我已经得到了许多元素对(s,h),其中在二维数组的第 - 行s发送一个h元素。s不必每行具有相同数量的元素,只知道不能超过一行中的 N 个元素。

我想要做的是找到第一行的某个元素与其他元素之间的最小最大差异(!)。

因此,如果我有 3 行,而(101,92) (100,25,95,52,101) (93,108,0,65,200)我想要找到的是 3,因为我必须选择 92,我从第一到第二有 95-92=3,从第一到第三有 93-92=1。

我已经达到了一个点,如果我有每个元素的s行和,那么在从第一行向其他行选择最佳拟合时,可以有一个良好的平均性能场景。n(i)i=0..sn0<=n1<=...<=ns

但是,在某些情况下,我想不出低于 O(n 2 ) 甚至可能是 O(n 3 ) 的方法。有没有人建议一种相当改进的方法来做到这一点?

0 投票
4 回答
1370 浏览

algorithm - 洗牌算法之间的区别

假设我们要编写一个方法来产生一副洗牌的纸牌。现在让它变得非常简单,忽略花色,所以我们有 52 张牌。

一种算法是:

  • 填充一个包含 52 个元素的数组,其中第一个元素为 1,第二个元素为 2,依此类推。
  • 编写一个迭代 X 次的 for 循环,在每次迭代期间,随机选择两张牌并交换它们。
  • X 越大,洗牌越随机。

另一种算法:

  • 像以前一样填充数组。
  • 编写一个迭代 26 次的 for 循环,并在每次迭代期间选择两个随机数并将这两个数字放在另一个 52 元素数组的连续前面,该数组存储新选择的数字。
  • 在每次迭代中,从原始数组中删除添加到新数组中的两张卡片。

我知道有更好的洗牌算法,但是关于这两个,哪一个更好,为什么?

0 投票
1 回答
416 浏览

arrays - 最大和最小子数组的交集

假设我们有一个包含一些整数的数组(可以是 +ve 和 -ve)。

我们从中找到非空的最大和最小子数组(子数组只有连续的元素)。

我的主张是这些子数组要么是不相交的(没有公共元素),要么一个完全包含另一个。不可能有像部分交叉这样的东西。

这种说法是真的吗?如果不能,你能举个反例吗?

示例:13 -3 -25 20 -3 -16 -23 18 20 -7 12 -5 -22 15 -4 7

最大子数组是从第 8 到第 11 个元素,总和为 43。最小子数组是从第 2 到第 7 个元素,总和为 -50。

0 投票
3 回答
8226 浏览

algorithm - 在 B-Tree 中找到最小键和前驱

解释如何找到存储在 B-tree 中的最小键以及如何找到存储在 B-tree 中的给定键的前任。

0 投票
3 回答
241 浏览

php - 聚类:在大型集合中查找接近项的组

我有一个项目数组(约 5000 个项目,每个项目都是一个英文单词)和成对项目之间的距离函数。我想在数组中找到一组项目,其中组内的所有项目都满足距离标准(例如,每对项目的距离小于 2)。这些组通常应尽可能大,但对此没有正式定义或硬性要求。

我的实现语言是 PHP,但我正在寻找有关可以有效处理此问题的算法的一般建议。

更新:我想我可以通过构建一个顶点是项目的图来解决这个问题,并且项目之间存在满足距离约束的边。一旦我构建了图,我就可以运行一个像 Bron-Kerbosch 这样的算法来列出所有的最大派系。如果这行得通,我会更新,但在此期间随时添加您的想法。

0 投票
4 回答
3704 浏览

algorithm - 中位数算法的中位数:为什么将数组分成大小为 5 的块

在中位数算法中,我们需要将数组分成大小为 5 的块。我想知道算法的发明者是如何想出幻数“5”而不是,可能是 7,或 9 或别的东西?

0 投票
5 回答
5084 浏览

c - 查找最大和连续子数组

我正在编写代码来查找 C 中的最大和连续子数组。在我看来,逻辑似乎很好,但输出仍然不正确。请查看代码。该算法将一个更大的数组分成 2 个子数组。然后它通过检查左数组、右数组以及包含中点的数组来检查最大和子数组(它将从中点检查左右,然后返回包含中点的最大和子数组)。

0 投票
3 回答
1749 浏览

recursion - 分而治之的递归

我只是想了解递归在这个例子中是如何工作的,如果有人能为我分解它,我将不胜感激。我有以下算法,它基本上返回数组中的最大元素:

我无法理解递归调用如何在这里工作。在进行第二次调用时,是否总是执行第一次递归调用?如果有人可以向我解释这一点,我真的很感激。非常感谢!