在JavaScript中,通过库或内置程序,是否有现成的等效numpy.partition
?
似乎没有任何流行的相关库(如underscore.js)提供这样的函数。我之所以这么问,是因为我希望能够在一般情况下找到数组中最高(或最低)的n
元素,而不必自己实现快速选择或内含选择。
对索引为n
的数组进行分区会重新排列数组,使n
的元素按排序顺序排列,并且索引大于n
的所有元素都大于n
的元素。或者,索引小于n
的元素都可以小于n
的元素。无论哪种方式,它都是一种部分排序,可以保证特定元素的位置以及其上下元素的分布
当然,全排序满足相同的条件,但在O(n log n)
时间内运行,而分区通常在O(n)
时间内运行(quickselect的平均情况,introselect的最坏情况)。
jQuery插件QuickSelect做了一些完全不同的事情,尽管它的名字很有前途。
这个问题的部分动机是:是否可以使用Math.min从数组中获得第二小的数字?
打包以进行快速选择。
Github
NPM
(我从未使用过这个包,但从自述文件来看,这似乎是OP想要的)