我正在执行二进制基数排序算法分配,但最后一步遇到问题。从我得到的指示来看,我知道我必须做什么,但不知道如何用 C++ 实现它。为了更好地理解我的要求,我举一个例子。假设我们有一个整数数组:
int array[5] = {5, 24, 8, 9, 10}
索引 0 处值为 5,索引 2 处值为 24,依此类推。 现在假设我将这些索引放入一个数组中并对它们重新排序(在我的例子中,对它们进行排序)
int indices[5] = {3, 4, 0, 1, 2}
我需要做的是,根据这些重新排序的索引,对初始数组重新排序。例如,由于索引 3 现在位于其数组中的索引 0 处,因此我必须将 9(在我的示例中位于索引 3 处)移动到其数组中的索引 1 处。最终的数组看起来像这样:
array[5] = {9, 10, 5, 24, 8}
我不确定这叫什么,所以我在网上找不到它。有人知道这个问题的答案吗?谢谢!
最佳答案
假设您不必就地执行此操作:
const int len = 5;
int newArray[len];
for(int i=0; i < len; ++i)
{
newArray[i] = array[indices[i]];
}
memcpy(array,newArray,len * sizeof(int));
关于c++ - 根据另一个数组中的排序索引对数组重新排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60917343/