我有一個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