
我们得到一个包含正数和负数的整数类型数组,比方说,任意给定大小的 arr[] 。任务是以这样的方式重新排列数组,使得偶数位置或索引处的所有元素都应大于奇数位置或索引处的元素,并且
打印结果。
让我们看看这个的各种输入输出场景 -
输入− int arr[] = {2, 1, 4, 3 , 6, 5, 8, 7}
输出− 排列前的数组:2 1 4 3 6 5 8 7
重新排列数组,使得偶数位置大于奇数位置: 1 2 3 4 5 6 7 8
解释− 我们得到一个大小为 8 的整数数组,其中包含正数和负面因素。现在,我们将数组重新排列,使得偶数位置的所有元素都大于奇数位置的元素,执行此操作后形成的数组为 1 2 3 4 5 6 7 8。
输入− int arr[] = {-3, 2, -4, -1}
输出− 排列前的数组:- 3 2 -4 -1
重新排列一个数组,使偶数位置大于奇数: -4 -3 -1 2
解释 - 我们得到一个大小为 8 的整数数组,其中包含正数和负面元素。现在,我们将数组重新排列,使得偶数位置的所有元素都大于奇数位置的元素,执行此操作后形成的数组为-4 -3 -1 2。
下面的程序使用的方法如下输入一个整型元素数组,计算数组的大小。
li>通过将数组和数组的大小传递给排序函数,使用 C++ STL 的排序方法对数组进行排序。
声明一个整型变量并通过调用函数 Rearrangement(arr, size) 来设置它
在函数 Rearrangement(arr, size) 内
声明临时整数类型变量,即第一个为 0 和最后到大小-1。
从 i 到 0 开始循环 FOR,直到 i 小于数组的大小。在循环内部,检查 IF (i + 1) % 2 等于 0,然后将 ptr[i] 设置为 arr[last--]。
ELSE,设置 ptr[i ] 到 arr[first++]。
打印结果。
示例#include <bits/stdc++.h>
using namespace std;
void Rearrangement(int* arr, int size){
int ptr[size];
int first = 0;
int last = size - 1;
for (int i = 0; i < size; i++){
if((i + 1) % 2 == 0){
ptr[i] = arr[last--];
}
else{
ptr[i] = arr[first++];
}
}
}
int main(){
//input an array
int arr[] = {2, 1, 4, 3, 6, 5, 8, 7};
int size = sizeof(arr) / sizeof(arr[0]);
//print the original Array
cout<<"Array before Arrangement: ";
for (int i = 0; i < size; i++){
cout << arr[i] << " ";
}
//sort an Array
sort(arr, arr + size);
//calling the function to rearrange the array
Rearrangement(arr, size);
//print the array after rearr
.........................................................