C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C ++では、偶数のインデックス要素が小さくなり、奇数のインデックス要素が大きくなるように配列を再配置します。


正の数と負の数の両方を含む整数型の配列、たとえば、任意のサイズのarr[]が与えられます。タスクは、偶数の位置またはインデックスにあるすべての要素が奇数の位置またはインデックスにある要素よりも少なくなるように配列を再配置し、結果を出力することです。

このためのさまざまな入出力シナリオを見てみましょう-

入力 − int arr [] ={2、1、4、3、6、5、8、7}

出力 −配置前の配列:2 1 4 3 6 5 8 7偶数のインデックス要素が小さく、奇数のインデックス要素が大きくなるような配列の再配置は次のとおりです。1 4 2 6 3 8 5 7

説明 −正の要素と負の要素の両方を含むサイズ8の整数配列が与えられます。ここで、偶数の位置にあるすべての要素が奇数の位置にある要素よりも少なくなり、この操作を実行した後に形成される配列が1 4 2 6 3 8 5 7になるように、配列を再配置します。

入力 − int arr [] ={10、-1、7、-5、6、-9}

出力 −配置前の配列:10 -1 7 -5 6 -9偶数のインデックス要素が小さく、奇数のインデックス要素が大きくなるような配列の再配置は、次のとおりです。-1 10 -5 7 -9 6

説明 −正の要素と負の要素の両方を含むサイズ6の整数配列が与えられます。ここで、偶数の位置にあるすべての要素が奇数の位置にある要素よりも少なくなり、この操作を実行した後に形成される配列が-1 10 -5 7-96になるように配列を再配置します。

>

以下のプログラムで使用されているアプローチは次のとおりです

  • 整数型要素の配列を入力し、配列のサイズを計算します。

  • FORループを使用して再配置アクションを実行する前に、配列を出力します。

  • 配列と配列のサイズをパラメーターとして渡すことにより、関数Rearrangement(arr、size)を呼び出します。

  • 関数Rearrangement(arr、size)の内部

    • iがサイズ-1未満になるまで、ループFORをiから0まで開始します。ループ内で、IF i%2を0にチェックし、次にifarr[i]がarr[i+ 1]より大きいことをチェックしてから、arr[i]とarr[i+1]をソートに渡すことによってC++STLのスワップメソッドを呼び出します。メソッド。

    • ここで、IF i%2が0に等しくないことを確認してから、IFarr[i]がarr[i+ 1]未満であることを確認してから、arr[i]とarr[i+1]をメソッドに渡してSTLのスワップメソッドを呼び出します。

  • 結果を印刷します。

#include <iostream>
using namespace std;
void Rearrangement(int* arr, int size){
   for(int i = 0; i < size - 1; i++){
      if(i % 2 == 0 ){
         if(arr[i] > arr[i + 1]){
            swap(arr[i], arr[i + 1]);
         }
      }
      if(i % 2 != 0){
         if(arr[i] < arr[i + 1]){
            swap(arr[i], arr[i + 1]);
         }
      }
   }
}
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] << " ";
   }
   //calling the function to rearrange the array
   Rearrangement(arr, size);
   //print the array after rearranging the values
   cout<<"\nRearrangement of an array such that even index elements are smaller and odd index elements are greater is: ";
   for(int i = 0; i < size; i++){
      cout<< arr[i] << " ";
   }
   return 0;
}

出力

上記のコードを実行すると、次の出力が生成されます

Array before Arrangement: 2 1 4 3 6 5 8 7
Rearrangement of an array such that even index elements are smaller and odd index elements are greater is: 1 4 2 6 3 8 5 7

  1. C++で2つの要素が隣接しないような循環配列の最大合計

    この問題では、循環配列cirArr[]が与えられます。私たちのタスクは、C++で2つの要素が隣接しないように循環配列の最大合計を見つけるプログラムを作成することです。 問題の説明 循環配列の場合、隣接する要素を取得できないように、配列の要素の最大合計を見つける必要があります。つまり、代替要素を取得する必要があります。 循環アレイ は、配列の最後の要素が最初の要素に接続されている特殊なタイプの配列です。 問題を理解するために例を見てみましょう 入力 cirArr[] = {4, 1, 5, 3, 2} 出力 9 説明 最大合計循環サブシーケンスは[4、5、2]です。合計=9 ソリ

  2. 配列内の偶数と奇数のインデックス付き要素の絶対差(C ++)?

    ここでは、配列内の奇数と偶数のインデックス付き要素の絶対差を取得する方法を説明します。絶対差は、1つのペアの差が負の場合、絶対値が取られることを示します。たとえば、番号を{1、2、3、4、5、6、7、8、9}とします。したがって、偶数の位置の要素は1、3、5、7、9(0から開始)であり、奇数の場所の要素は2、4、6、8です。したがって、偶数の位置のデータの差は| 1〜3|です。 =2、次に| 2-5 | =3、| 3-7 | =4および|4-9| =5同様に、奇数の場所の差は4になります。 アルゴリズム offEvenDiff(arr、n) begin    even :