首页 >后端开发 >C++ >重新排列一个数组,使得每个奇数索引的元素都大于其前一个元素

重新排列一个数组,使得每个奇数索引的元素都大于其前一个元素

WBOY
WBOY转载
2023-09-01 09:45:071154浏览

重新排列一个数组,使得每个奇数索引的元素都大于其前一个元素

我们有一个正整数类型的数组,假设为arr[],大小任意。任务是重新排列数组,使得所有奇数索引位置的元素的值大于偶数索引位置的元素,并打印结果。

让我们看看各种输入输出情况:

输入 − int arr[] = {2, 1, 5, 4, 3, 7, 8}

输出 − 排列前的数组:2 1 5 4 3 7 8 将数组重新排列,使得每个奇数索引的元素都大于其前一个元素:1 4 2 5 3 8 7

解释  - 我们给定一个大小为7的整数数组。现在,如果偶数索引的元素较大,我们将交换偶数索引处的元素和奇数索引处的元素

Arr[0] > arr[1] = call swap = {1, 2, 5, 4, 3, 7, 8}
Arr[2] > arr[3] = call swap = {1, 2, 4, 5, 3, 7, 8}
Arr[6] > arr[5] = call swap = {1, 2, 4, 5, 3, 8, 7}
Arr[2] > arr[1] = call swap = {1, 4, 2, 5, 3, 8, 7}

输入− int arr[] = {3, 2, 6, 9}

输出− 排列前的数组: 3 2 6 9 Rearrangement of an array such that every odd indexed element is greater than it previous is: 2 3 6 9

Explanation − we are given an integer array of size 4. Now, we will swap the elements at even index with the elements at odd index if even indexed elements are greater i.e. Arr[0] > arr[1] = call swap = {2, 3, 6, 9}. No need to further call the swap method as all the elements at positions satisfies the conditions

Approach used in the below program is as follows

  • Input an array of integer type elements and calculate the size of an array.

  • Print the array before arrangement and call the function Rearrangement(arr, size)

  • Inside the function Rearrangement(arr, size)

    • Create a variable of integer type let’s say, ptr and set it with size-1.

    • Start loop FOR, from i to 0 till i less than ptr and i = i + 1. Inside the loop, check if arr[i] is greater than arr[i+1] then call swap(arr[i], arr[i+1]).

    • Check IF size & 1 then start loop FOR from i to ptr till i greater than 0 and i = i - 2. Inside the loop, check IF arr[i] greater than arr[i - 1] then call swap(arr[i], arr[i-1])

  • Print the array after the rearrangement of values of an array.

Example

#include <iostream>
using namespace std;
void Rearrangement(int arr[], int size){
   int ptr = size - 1;
   for(int i = 0; i < ptr; i = i+2){
      if(arr[i] > arr[i+1]){
         swap(arr[i], arr[i+1]);
      }
   }
   if(size & 1){
      for(int i = ptr; i > 0; i = i-2){
         if(arr[i] > arr[i-1]){
            swap(arr[i], arr[i-1]);
         }
      }
   }
}
int main(){
   //input an array
   int arr[] = {2, 1, 5, 4, 3, 7, 8};
   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] << " ";
   }
   //calling the function to rearrange the array
   Rearrangement(arr, size);
   //print the array after rearranging the values
   cout<<"\nRearrangement of an array such that every odd indexed element is greater than it previous is: ";
   for(int i = 0; i < size; i++){
      cout<< arr[i] << " ";
   }
   return 0;
}

输出

如果我们运行上述代码,将会生成以下输出

Array before Arrangement: 2 1 5 4 3 7 8
Rearrangement of an array such that every odd indexed element is greater than it previous is: 1 4 2 5 3 8 7

以上是重新排列一个数组,使得每个奇数索引的元素都大于其前一个元素的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文转载于:tutorialspoint.com。如有侵权,请联系admin@php.cn删除