可能重复:
就地阵列重新排序?
我有原始的未排序数组,其结构如下:
{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)
我怎样才能通过索引数组简单地重新排列原始数组?
我无法通过索引位置创建新数组和插入元素.
我的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)