我正在寻找最简单和最快的方法来对一个包含 10^5 个条目的数组进行排序,然后对下一个数组执行相同的操作。数组的大小都相同。例如:
1 一
6 C
3 B
我必须对第一列进行排序,但 6 必须与 c 在同一行:
1 a 3 b 6 c
我想我找到了一些东西,但实现起来看起来很奇怪:
我正在寻找最简单和最快的方法来对一个包含 10^5 个条目的数组进行排序,然后对下一个数组执行相同的操作。数组的大小都相同。例如:
1 一
6 C
3 B
我必须对第一列进行排序,但 6 必须与 c 在同一行:
1 a 3 b 6 c
我想我找到了一些东西,但实现起来看起来很奇怪:
推力::sort_by_key正是你所需要的。
这是他们文档中的一个示例。
#include <thrust/sort.h>
...
const int N = 6;
int keys[N] = { 1, 4, 2, 8, 5, 7};
char values[N] = {'a', 'b', 'c', 'd', 'e', 'f'};
thrust::sort_by_key(keys, keys + N, values, thrust::greater<int>());
// keys is now { 8, 7, 5, 4, 2, 1}
// values is now {'d', 'f', 'e', 'b', 'c', 'a'}
如果您已经在 gpu 上有数据,您也可以使用 device_ptr 执行相同的操作。