💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# 重新排列数组,使偶数位置大于奇数 > 原文: [https://www.geeksforgeeks.org/rearrange-array-such-that-even-positioned-are-greater-than-odd/](https://www.geeksforgeeks.org/rearrange-array-such-that-even-positioned-are-greater-than-odd/) 给定一个 n 个元素的数组`A`,请根据以下关系对数组进行排序: ![ A[i] >= A[i-1] ](https://img.kancloud.cn/d8/ce/d8ced3452cf8e1818dc9d441530ba776_186x28.png "Rendered by QuickLaTeX.com") ,如果`i`是偶数。 ![ A[i] <= A[i-1] ](https://img.kancloud.cn/0e/2f/0e2fd5f457887970549708972dffb722_186x28.png "Rendered by QuickLaTeX.com") ,如果`i`是奇数。 打印结果数组。 例子 : ``` Input : A[] = {1, 2, 2, 1} Output : 1 2 1 2 Explanation : For 1st element, 1 1, i = 2 is even. 3rd element, 1 1, i = 4 is even. Input : A[] = {1, 3, 2} Output : 1 3 2 Explanation : Here, the array is also sorted as per the conditions. 1 1 and 2 < 3. ``` 观察到该数组由[n / 2]个均匀放置的元素组成。 如果我们将最大[n / 2]个元素分配给偶数位置,而将其余元素分配给奇数位置,那么我们的问题就解决了。 因为处于奇数位置的元素将始终小于处于偶数位置的元素,因为它是最大元素,反之亦然。 对数组进行排序,并在偶数位置分配前[n / 2]个元素。 下面是上述方法的实现: ## C++ ```cpp // C++ program to rearrange the elements  // in array such that even positioned are  // greater than odd positioned elements #include<bits/stdc++.h> using namespace std; void assign(int a[], int n) {     // Sort the array     sort(a, a + n);     int ans[n];      int p = 0, q = n - 1;     for (int i = 0; i < n; i++)      {         // Assign even indexes with maximum elements         if ((i + 1) % 2 == 0)             ans[i] = a[q--];         // Assign odd indexes with remaining elements         else             ans[i] = a[p++];     }     // Print result     for (int i = 0; i < n; i++)          cout << ans[i] << " "; } // Driver Code int main() {     int A[] = { 1, 3, 2, 2, 5 };     int n = sizeof(A) / sizeof(A[0]);     assign(A, n);     return 0; } ```