ホームページ  >  記事  >  バックエンド開発  >  C++ で 'arr' が 'j' の場合、'arr' が 'i' になるように配列を再配置します。

C++ で 'arr' が 'j' の場合、'arr' が 'i' になるように配列を再配置します。

王林
王林転載
2023-09-18 10:29:05789ブラウズ

C++ で arr が j の場合、arr が i になるように配列を再配置します。

正の整数型の配列が与えられます。これが arr[] であると仮定します。そのサイズは任意に指定でき、配列内の要素の値は 0 より大きく、未満である必要があります。配列のサイズ。任務は再配置することです 配列、arr[j] が "j" の場合、arr[j] は "i" になり、最終結果が出力されます。

この状況におけるさまざまな入出力シナリオを見てみましょう - h2>

Input- int arr[] = {3, 4, 1, 2, 0}

出力- ソート前の配列: 3 4 1 2 0 arr[j] が i になるように配列を並べ替えます。arr[i] が j の場合、次のようになります: 4 2 3 0 1

説明- サイズ配列 6 の整数を取得します。および 6 未満の値を持つ配列内のすべての要素。ここで、配列を再配置します。つまり、arr[1] は 4、arr[4] = 1、arr[2] は 1、arr[1] = 2、arr[3] は 2. arr[2] = 3; arr[4] は 0、arr[0]=4。したがって、最終的な配列は 4 2 3 0 1 になります。

入力 t- int arr[] = {2, 0, 1, 3}

出力- 配置前の配列: 2 0 1 3 arr[i] が j の場合、arr[j] が i になるように配列を並べ替えます。 1 2 0 3

説明- サイズ 6 の整数の配列を取得し、配列内のすべての要素の値が 6 未満です。ここで、配列を再配置します。つまり、arr[0] は 2、arr[2] = 0、arr[1] は 0、arr[0] = 1、arr[2] は 1、arr[1] = 2; arr[3] は 3、arr[3] = 3。したがって、最終的な配列は 1 2 0 3 になります。

次のプログラムで使用するメソッドは次のとおりです。

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

  • 配列を配置する前に配列を出力し、Rearrangement(arr, size)関数を呼び出します。

  • 関数Rearrangement(arr, size)

    • #配列 arr[] と同じサイズの整数型の値の配列 ptr[] を作成します。

    • i が size 未満になるまで、i から 0 まで FOR のループを開始します。ループ内で、ptr[arr[i]] を i に設定します。

    • i が size 未満になるまで、i から 0 まで FOR のループを開始します。ループ内で、arr[i] を ptr[i] に設定します。

  • #再配置された配列を出力します。

#include <bits/stdc++.h>
using namespace std;
void Rearrangement(int arr[], int size){
   int ptr[size];
   for(int i = 0; i < size; i++){
      ptr[arr[i]] = i;
   }
   for(int i = 0; i < size; i++){
      arr[i] = ptr[i];
   }
}
int main(){
   //input an array
   int arr[] = {3, 4, 1, 2, 0};
   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 &lsquo;arr[j]&rsquo; becomes &lsquo;i&rsquo; if &lsquo;arr[i]&rsquo; is &lsquo;j&rsquo; is: ";
   for(int i = 0; i < size; i++){
      cout<< arr[i] << " ";
   }
   return 0;
}

出力

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

Array before Arrangement: 3 4 1 2 0
Rearrangement of an array such that &lsquo;arr[j]&rsquo; becomes &lsquo;i&rsquo; if &lsquo;arr[i]&rsquo; is &lsquo;j&rsquo; is: 4 2 3 0 1

以上がC++ で 'arr' が 'j' の場合、'arr' が 'i' になるように配列を再配置します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。