如何在一个序列中求出最大值的位置

我要求一个序列中的最大值的位置,不要求排序,也不要求得到最大值的具体值,有什么好的算法?请教各位老大

归约

[ 本帖最后由 yyfn风辰 于 2009-12-21 15:32 编辑 ]

还是通过约减操作实现,只不过在shared memory里进行约减操作时,不仅交换序列值,同时交换其索引,以下是代码片段

C/C++ code

if(threadIdx.x<…){
if(seg[threadIdx.x]<seg[threadIdx.x+…]){
//序列值也必须交换,因为下个约减步需要用到
swap(seg[threadIdx.x],seg[threadIdx.x+…]);
swap(idx[threadIdx.x],idx[threadIdx.x+…]);
}
} # sync if needed

还有可能更有效的方法

晕,上面的代码不是我在CSDN的CUDA论坛的回答吗