numpy.argsort中的支点是如何选择的?

How is the pivot chosen in numpy.argsort?

我想通过比较 ‘quicksort’‘mergesort’‘heapsort’‘stable’ 中可用的不同排序算法来对 np.argsort 进行基准测试 np.argsort documentation。我想知道 pivot 是如何选择的,即 quicksort.

我找到了 source file for np.sort 并且 pivot 的选择在那里很清楚。但是,我找不到描述 np.argsort 幕后情况的文件。合理的假设是这些方法执行相同,但是,我想以某种方式验证它。

当调用 np.argsort(kind='quicksort') 时,调用被分派到 PyArray_ArgSort and then to npy_aquicksort(C 源 links):

这还包括与您的 link 至 np.sort 相同的枢轴选择:

pm = pl + ((pr - pl) >> 1);

无需进一步研究,我假设这会选择当前分区的中心元素作为基准。