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

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

WBOY
WBOYforward
2023-09-09 17:13:091224browse

重排数组,使得当 i 为偶数时,arr[i] >= arr[j],当 i 为奇数时,arr[i] <= arr[j],其中 j < i,使用 C++ 语言实现

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].

Let us take a look at the various input and output situations of this −

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].

The method used in the following program is as follows

  • 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].

Example

#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;
}

Output

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!

Statement:
This article is reproduced at:tutorialspoint.com. If there is any infringement, please contact admin@php.cn delete