💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# 根据给定的索引对数组重新排序 > 原文: [https://www.geeksforgeeks.org/reorder-a-array-according-to-given-indexes/](https://www.geeksforgeeks.org/reorder-a-array-according-to-given-indexes/) 给定两个大小相同的整数数组“`arr[]`”和“`index[]`”,请根据给定的索引数组对“`arr[]`”中的元素进行重新排序。 不允许指定数组`arr`的长度。 **示例**: ``` Input: arr[] = [10, 11, 12]; index[] = [1, 0, 2]; Output: arr[] = [11, 10, 12] index[] = [0, 1, 2] Input: arr[] = [50, 40, 70, 60, 90] index[] = [3, 0, 4, 1, 2] Output: arr[] = [40, 60, 90, 50, 70] index[] = [0, 1, 2, 3, 4] ``` 预期时间复杂度`O(n)`和辅助空间`O(1)` **我们强烈建议您最小化浏览器,然后自己尝试。** **简单解决方案**是使用与给定数组大小相同的辅助数组`temp[]`。 遍历给定的数组,并使用`index[]`将所有元素放在`temp[]`中的正确位置。 最后,将`temp[]`复制到`arr[]`并将`index[i]`的所有值设置为`i`。 ## C++ ```cpp // C++ program to sort an array according to given // indexes #include<iostream> using namespace std; // Function to reorder elements of arr[] according // to index[] void reorder(int arr[], int index[], int n) {     int temp[n];     // arr[i] should be present at index[i] index     for (int i=0; i<n; i++)         temp[index[i]] = arr[i];     // Copy temp[] to arr[]     for (int i=0; i<n; i++)     {         arr[i]   = temp[i];        index[i] = i;     } } // Driver program int main() {     int arr[] = {50, 40, 70, 60, 90};     int index[] = {3,  0,  4,  1,  2};     int n = sizeof(arr)/sizeof(arr[0]);     reorder(arr, index, n);     cout << "Reordered array is: \n";     for (int i=0; i<n; i++)         cout << arr[i] << " ";     cout << "\nModified Index array is: \n";     for (int i=0; i<n; i++)         cout << index[i] << " ";     return 0; } ```