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

C ++ STL(cute ho ap)でstd ::merge()を使用して、ソートされた2つの配列をすばやくマージします


この記事では、C++STLでstd::merge()関数を使用して2つのソートされた配列をすばやくマージする方法について説明します。

したがって、問題を解決する前に、まずC++STLのstd::merge()について説明しましょう。

std ::merge()とは何ですか?

std ::merge()関数は、C ++ STLに組み込まれている関数であり、ヘッダーファイルで定義されています。 merge()は、2つのソートされた範囲または系列をマージするために使用されます。この関数は、2つのソートされた範囲を組み合わせて、1つのソートされた範囲を作成します。すべての要素は、未満の演算子(<)を使用して比較されるため、3番目の範囲も独自に並べ替えられます。

std ::merge()を使用して、ソートされた2つの配列をすばやくマージするにはどうすればよいですか?

arr1[]とarr2[]の2つの並べ替えられた配列が与えられます。タスクは、C ++ STLで使用可能な関数merge()を使用して、これら2つの並べ替えられた配列をマージし、arr3[]である別の空の配列に格納することです。 。

  • 最初に、両方の配列arr[size_arr]とbrr[size_brr]のサイズを計算し、両方の配列final [size_arr+size_brr]のサイズの合計であるサイズの3番目の配列を定義します。

  • 次に、merge(arr、(arr + size_arr)、brr、(brr + size_brr)、final);

    のようなmerge()関数を使用して、2つの配列を3番目の配列にマージします。

#include <iostream>
#include <algorithm>
using namespace std;
int main(){
   int arr[] = {1, 2, 3};
   int size_arr = sizeof(arr)/sizeof(arr[0]);
   int brr[] = {4, 5, 6};
   int size_brr = sizeof(brr)/sizeof(brr[0]);
   int final[size_arr + size_brr];
   merge(arr, (arr + size_arr), brr, (brr + size_brr), final);
   cout<<"Final array after merging the elements is: ";
   for (int i = 0; i < (size_brr + size_arr); i++)
      cout << final[i] << " ";
   return 0;
}

出力

Final array after merging the elements is: 1 2 3 4 5 6

  1. C#を使用して、並べ替えられた2つの配列をリストにマージします

    2つの並べ替えられた配列をリストにマージするには、最初に2つの並べ替えられた配列を設定します- int[] array1 = { 1, 2 }; int[] array2 = { 3, 4 }; それをリストに追加してマージします- var list = new List<int>(); for (int i = 0; i < array1.Length; i++) {    list.Add(array1[i]);       list.Add(array2[i]); } 次に、ToArray()メソッドを使用して、以下

  2. heapqを使用してPythonで2つのソートされた配列をマージしますか?

    このセクションでは、Pythonのheapqモジュールを使用して2つのソートされたリストをマージする方法を説明します。例として、list1 =[10、20、30、40]およびlist2 =[100、200、300、400、500]の場合、マージ後、list3 =[10、20、30、40、100、 200、300、400、500] このタスクを実行するには、heapqモジュールを使用します。このモジュールには、標準ライブラリモジュールとしてPythonが付属しています。したがって、使用する前にインポートする必要があります。 import heapq heapqモジュールにはいくつかのプロパ