我有一个2560x2048的浮点值数组,我需要25%和75%的百分点值。 (5,242,880)作为一维载体。我的第一个想法是使用双向排序并获取25%和75%的值。但是我所用的Bitonic类型是2个阵列的功率,我不想用假人去更大的阵列。数组的百分数(在CUDA中)没有排序?
这让我想到,也许有人有一种方法可以在没有完整排序的情况下获得百分位数?
我有一个2560x2048的浮点值数组,我需要25%和75%的百分点值。 (5,242,880)作为一维载体。我的第一个想法是使用双向排序并获取25%和75%的值。但是我所用的Bitonic类型是2个阵列的功率,我不想用假人去更大的阵列。数组的百分数(在CUDA中)没有排序?
这让我想到,也许有人有一种方法可以在没有完整排序的情况下获得百分位数?
Tae-Sung Shin是正确的。直方图的百分位数是实现这一点的最佳方法。
在性能方面,精心编写的排序代码和平均排序代码之间的差异可能相当大。在没有应用最好的忍者努力的情况下,用一种不太理想的选择算法来挣扎,可能是一个性能较差的选择,而不是简单地用最快的可用排序。在理论上排序需要更多的工作,但它有相当多的努力(例如[cub](http://nvlabs.github.io/cub/index.html))。无论如何,我认为你的“重新要求是一种选择算法,如[this one](http://code.google.com/p/ggks/)。 – 2015-02-10 23:06:38
是的,我正在寻找的是iqr,四分位数范围,选择算法会更快更简单地进行编码? – 2015-02-10 23:21:01
忘记排序和cuda,但建立直方图会更容易理解您的问题。 – 2015-02-11 17:13:18