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

C++でソートされていない2つの配列のUnionとIntersectionを検索します


このチュートリアルでは、2つのソートされていない配列の和集合と共通部分のプログラムを作成する方法を学習します。例を見てみましょう。

入力

arr_one = [1, 2, 3, 4, 5]
arr_two = [3, 4, 5, 6, 7]

出力

union: 1 2 3 4 5 6 7
intersection: 3 4 5

問題を解決するための手順を見てみましょう。

ユニオン

  • 2つの配列をランダムな値で初期化します。

  • union_resultという名前の空の配列を作成します。

  • 最初の配列を繰り返し処理し、すべての要素を追加します。

  • セクション配列を繰り返し処理し、union_result配列に要素が存在しない場合は要素を追加します。

  • union_result配列を出力します。

交差点

  • 2つの配列をランダムな値で初期化します。

  • intersection_resultという名前の空の配列を作成します。

  • 最初の配列を繰り返し処理し、2番目の配列に要素が存在する場合は要素を追加します。

  • 交差点の結果の配列を出力します。

以下のコードを参照してください

#include <bits/stdc++.h>
using namespace std;
int isElementPresentInArray(int arr[], int arr_length, int element) {
   for (int i = 0; i < arr_length; ++i) {
      if (arr[i] == element) {
         return true;
      }
   }
   return false;
}
void findUnionAndIntersection(int arr_one[], int arr_one_length, int arr_two[], int arr_two_length) {
   // union
   int union_result[arr_one_length + arr_two_length] = {};
   for (int i = 0; i < arr_one_length; ++i) {
      union_result[i] = arr_one[i];
   }
   int union_index = arr_one_length;
   for (int i = 0; i < arr_two_length; ++i) {
      if (!isElementPresentInArray(arr_one, arr_one_length, arr_two[i])) {
         union_result[union_index++] = arr_two[i];
      }
   }
   cout << "Union: ";
   for (int i = 0; i < union_index; ++i) {
      cout << union_result[i] << " ";
   }
   cout << endl;
   // intersection
   int intersection_result[arr_one_length + arr_two_length] = {};
   int intersection_index = 0;
   for (int i = 0; i < arr_one_length; ++i) {
      if (isElementPresentInArray(arr_two, arr_two_length, arr_two[i])) {
         intersection_result[intersection_index++] = arr_one[i];
      }
   }
   cout << "Intersection: ";
   for (int i = 0; i < intersection_index; ++i) {
      cout << intersection_result[i] << " ";
   }
   cout << endl;
}
int main() {
   int arr_one[] = {1, 2, 3, 4, 5};
   int arr_two[] = {3, 4, 5, 6, 7};
   findUnionAndIntersection(arr_one, 5, arr_two, 5);
   return 0;
}

出力

上記のプログラムを実行すると、次の結果が得られます。

Union: 1 2 3 4 5 6 7
Intersection: 1 2 3 4 5

結論

チュートリアルに質問がある場合は、コメントセクションにそのことを記載してください。


  1. C++で2つの配列の合計を同じにする要素スワッピングのペアを見つけます

    要素数が異なる2つの配列があるとします。要素のペア(x​​、y)を見つける必要があります。ここで、xは最初の配列に存在し、yは2番目の配列に存在します。ペアは、これら2つの配列間で要素を交換した後、これら2つの配列の合計が同じになるように選択されます。 最初の配列Aが[4、1、2、2、1、1]を保持し、Bが[3、3、6、3]を保持しているとすると、Aの合計は11、Bの合計は15になります。 (1、3)のようなペアで、これら2つの配列間でこれらの値を交換すると、合計は次のようになります。[4、3、2、2、1、1] =13、[1、3、6、3] =13、それらは同じです。 これを解決するために、

  2. ソートされていない2つの配列の和集合と共通部分を見つけるC++プログラム

    この記事では、2つの指定されたソートされていない配列の和集合と共通部分を見つけるプログラムについて説明します。 2つのアレイを「A」と「B」で表します。次に、これらの配列の結合はA∪Bで示されます。 これは基本的に、指定された両方の配列のすべての要素の配列です。ただし、各要素は1回だけ繰り返されます。 これを見つけるために、別の配列を作成し、最初の配列からすべての要素をコピーします。次に、2番目の配列の要素をトラバースし、それがユニオン配列にすでに存在するかどうかを確認します。そうでない場合は、ユニオン配列に追加します。 同様に、2つの配列の共通部分はA∩Bで示されます。 これは、指定さ