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

配列を最大最小形式で再配置するC++プログラム


ソート/非ソート方式で配置できる整数配列が与えられます。タスクは、値が並べ替えられていない場合、最初に配列を並べ替えてから、配列の最初の要素が最大値、2番目が最小値、3番目が2番目に大きい値、4番目が次のように配列を配置することです。 2番目に小さい値など。

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

入力 − int arr [] ={7、5、2、3、4、9、10、5}

出力 −配置前の配列:2 3 4 5 5 7 9 10最大最小形式での配列の再配置は次のとおりです:10 2 9 3 7 4 5 5

説明 − {7、5、2、3、4、9、10、5}の値を含む整数型の配列が与えられます。まず、配列を並べ替えると、{2 3 4 5 5 7910}になります。次に、最大の要素をarr [0]に配置します。つまり、10、次に最小の要素をarr [1]に配置します。つまり、2、次に大きい要素をarr [2]に配置します。つまり、9というように配置します。最終的に得られる配列は1029 3 7 4 5 5

になります。

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

出力 −配置前の配列:1、2、4、6、7最大最小形式の配列の再配置は次のとおりです:7、1、6、2、4

説明 − {2、4、1、6、7}の値を含む整数型の配列が与えられます。まず、配列を並べ替えます。これは{1、2、4、6、7}になります。次に、最大の要素をarr [0]、つまり7に配置し、次に最小の要素をarr [1]に配置します。つまり、1、次に2番目に大きい要素をarr [2]、つまり6に配置します。最終的に得られる配列は7、1、6、2、4

になります。

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

  • 整数型要素の配列を入力し、配列のサイズを計算します。 arr []と配列のサイズを引数として関数に渡すことにより、C++STLのsortメソッドを呼び出します。

  • 配置する前に配列を出力し、関数Rearr_Max_Min(arr、size)

    を呼び出します。
  • 関数Rearr_Max_Min(arr、size)

    の内部
    • 変数をmaxとして宣言し、サイズ-1で設定し、別の変数をminとして設定し、0で設定します。変数をmax_valとして宣言し、arr [size-1]+1で設定します。

    • iがサイズより小さくなるまでiから0までループFORを開始します。ループ内で、IF i%2 =0を確認してから、arr[i]をarr[i] +(arr [max]%max_val)* max_valに設定し、maxを1だけデクリメントします。

    • それ以外の場合は、arr[i]をarr[i] +(arr [min]%max_val)* max_valに設定し、最小値を1ずつ増やします。

    • iがサイズより小さくなるまでiから0までループFORを開始します。ループ内で、arr[i]をarr[i] / max_val

      に設定します

#include <bits/stdc++.h>
using namespace std;
void Rearr_Max_Min(int arr[], int size){
   int max = size - 1;
   int min = 0;
   int max_val = arr[size - 1] + 1;
   for (int i = 0; i < size; i++){
      if (i % 2 == 0){
         arr[i] += (arr[max] % max_val) * max_val;
         max--;
      }
      else{
         arr[i] += (arr[min] % max_val) * max_val;
         min++;
      }
   }
   for(int i = 0; i < size; i++){
      arr[i] = arr[i] / max_val;
   }
}
int main(){
   //input an array
      int arr[] = {7, 5, 2, 3, 4, 9, 10, 5 };
      int size = sizeof(arr) / sizeof(arr[0]);
      //sort an array
      sort(arr, arr + size);
      //print the original Array after sorting
      cout<<"Array before Arrangement: ";
      for (int i = 0; i < size; i++){
         cout << arr[i] << " ";
      }
      //calling the function to rearrange the array
      Rearr_Max_Min(arr, size);
      //print the array after rearranging the values
      cout<<"\nRearrangement of an array in maximum minimum form is: ";
      for(int i = 0; i < size; i++){
         cout<< arr[i] << " ";
      }
   return 0;
}

出力

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

Array before Arrangement: 2 3 4 5 5 7 9 10
Rearrangement of an array in maximum minimum form is: 10 2 9 3 7 4 5 5

  1. C++で配列のビットノイズをチェックするプログラム

    N個の整数の配列arr[N]が与えられた場合、タスクは、与えられた配列がバイトニックであるかどうかをチェックすることです。指定されたアレイがバイトニックである場合は、「はい、バイトニックアレイです」と出力します。そうでない場合は、「いいえ、バイトニックアレイではありません」と出力します。 Bitonicアレイとは、アレイが最初に厳密に昇順で、次に厳密に降順である場合です。 この配列のように、arr [] ={1、2、3、4、2、-1、-5}はバイトニック配列です。これは、4までは厳密に昇順であり、4以降は厳密に降順であるためです。 入力 arr[] = {1, 3, 5, 4,

  2. 可変長配列を実装するC++プログラム

    可変長配列は、ユーザーが必要とするサイズにすることができます。つまり、可変サイズにすることができます。 C++で可変長配列を実装するプログラムは次のとおりです- 例 #include <iostream> #include <string> using namespace std; int main() {    int *array, size;    cout<<"Enter size of array: "<<endl;    cin>>size