JavaScript中的numpy.partition

4

是否有一个现成的JavaScript库或内置函数,类似于numpy.partition

看起来像underscore.js这样的流行库都没有提供这样的功能。我想知道是否能找到一个通用情况下能够找到数组中前n个最大(或最小)元素的函数,而不必自己实现quickselectintroselect

在索引n处对数组进行分区会重新排列数组,以使得索引为n的元素按排序顺序排列,并且所有大于n的索引处的元素都比n处的元素大。或者,小于n的索引处的元素都可以小于n处的元素。无论哪种方式,它都是一个部分排序,保证了特定元素的位置以及上下元素的分布。
当然,完全排序也满足相同的条件,但运行时间为O(n log n),而分区通常运行时间为O(n)(快速选择的平均情况,introselect的最坏情况)。
jQuery插件QuickSelect执行完全不同的操作,尽管名称很有前途。
这个问题的部分动机:可能使用Math.min从数组中获取第二个最小的数字吗?

@hpaulj。不仅仅是“我想要在通用情况下找到数组中最大(或最小)的n个元素”吗? - Mad Physicist
@zzzzBov,如果您能推荐一个合适的论坛,我很乐意在其他地方提出这个问题。 - Mad Physicist
@MadPhysicist 可能会在聊天中得到合理的回答,或者至少会讨论应该去哪里寻找。SO 对于“我应该使用哪个插件/库/框架来解决[问题]?”这种问题并没有很好的解决方案。它们往往过于依赖意见,并且经常被推到外部网站。 - zzzzBov
@zzzzBov。这里我并不是在征求您的意见。任何实现所需操作的方式都可以。话虽如此,如果我知道哪个网站适合这种问题,我也不介意被踢出去。如果有需要,我也可以自己离开。 - Mad Physicist
@binarymax。我认为我不需要在JavaScript中寻求实现算法的帮助。我的实现可能不会使用所有最新和最棒的功能,但我有信心我足够了解introselect以使其正常工作。整个问题的要点是编写正确的代码并不是一项微不足道的任务,我真的很希望有人已经为我完成了这项工作 :) - Mad Physicist
显示剩余9条评论
1个回答

1

这是一个快速选择的包。

Github

NPM

(我从README中了解到,虽然我没有使用过这个包,但它似乎是OP在寻找的东西)


1
这正是 OP 寻找的。谢谢! - Mad Physicist

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接