通过C中的索引数组对数组进行排序

Pet*_* K. 3 c algorithm

可能重复:
就地阵列重新排序?

我有原始的未排序数组,其结构如下:

{D, A, B, E, C}
Run Code Online (Sandbox Code Playgroud)

和排序顺序的原始数组的索引数组:

{2, 3, 5, 1, 4} // Edited. Then I get {A, B, C, D, E}.
Run Code Online (Sandbox Code Playgroud)

我怎样才能通过索引数组简单地重新排列原始数组

我无法通过索引位置创建新数组和插入元素.

pan*_*-34 5

我的5美分:

int new_i;
for (int i = 0; i < arr_size-1; ++i)
{
    while ((new_i = index_arr[i]-1) != i)
    {
        std::swap(struct_arr[i], struct_arr[new_i]);
        std::swap(index_arr[i], index_arr[new_i]);
    }
}
Run Code Online (Sandbox Code Playgroud)