Home > Article > Backend Development > Rearrange the array so that when i is an even number, arr[i] >= arr[j], when i is an odd number, arr[i] <= arr[j], where j < i, implemented in C++ language
We get an integer array containing odd and even integer values. The task is to rearrange the array so that arr[i] is greater than or equal to arr[j], provided that the value at index arr[i] should be even, and if the value at arr[i] is odd, then arr[i] should
Less than or equal to arr[j].
Input − int arr[] = {5, 9, 10, 12, 32, 35, 67, 89}
Output − The array after rearranging the elements is: 12 32 10 35 9 67 5 89
Explanation − We give Define an array containing odd and even integers. Now, we will traverse starting from the arr[i] position, compare the arr[j] position, and check if arr[i] is even, then make sure arr[i] is greater than arr[j], if arr[i] is odd, Then ensure that arr[i] is less than or equal to arr[j].
Input − int arr[] = {4, 5, 1, 2, 9, 10}
Output − After rearranging elements The array is: 4 5 2 9 1 10
Explanation − We are given an array containing odd and even integers. Now, we will traverse starting from the arr[i] position, compare the arr[j] position, and check if arr[i] is even, then make sure arr[i] is greater than arr[j], if arr[i] is odd, Then ensure that arr[i] is less than or equal to arr[j].
Declare an array of integer type. Calculate the size of the array, size = sizeof(arr) / sizeof(arr[0]).
Call a function called array_rearrange(arr, size) and pass the data as a parameter.
Declare a variable even and set it to even = size / 2, then declare another variable odd and set it to size - even.
Declare a variable temp and set it to odd - 1. Declare an array arr_2[] of size arr_1[].
Start the loop, starting from i being 0 and i being less than size. Inside the loop, set arr_2[i] to arr[i].
Call a function named sort(arr_2, arr_2 size).
Start the loop, starting from i being 0 and i being less than size. Inside the loop, set arr[i] to arr_2[temp] and decrement the variable temp by 1.
Set temp to odd. Start looping from i to 1, i is less than size. Inside the loop, set arr[i] to arr_2[temp] and increment temp by 1.
Start the loop, starting from i being 0 and i being less than size. Print arr[i].
#include <bits/stdc++.h> using namespace std; void array_rearrange(int arr[], int size){ int even = size / 2; int odd = size - even; int temp = odd - 1; int arr_2[size]; for(int i = 0; i < size; i++){ arr_2[i] = arr[i]; } sort(arr_2, arr_2 + size); for(int i = 0; i < size; i += 2){ arr[i] = arr_2[temp]; temp--; } temp = odd; for(int i = 1; i < size; i += 2){ arr[i] = arr_2[temp]; temp++; } cout<<"Array after rearranging elements are: "; for (int i = 0; i < size; i++){ cout << arr[i] << " "; } } int main(){ int arr[] = {5, 9, 10, 12, 32, 35, 67, 89}; int size = sizeof(arr) / sizeof(arr[0]); array_rearrange(arr, size); return 0; }
If we run the above code it will generate the following output
Array after rearranging elements are: 12 32 10 35 9 67 5 89
The above is the detailed content of Rearrange the array so that when i is an even number, arr[i] >= arr[j], when i is an odd number, arr[i] <= arr[j], where j < i, implemented in C++ language. For more information, please follow other related articles on the PHP Chinese website!