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

C++でソートされた順序で2つのソートされていない配列をマージします。


問題の説明

ソートされていない2つの配列を受け取り、それらをソートされた順序で新しい配列にマージする関数を記述します。

arr1[] = {10, 5, 7, 2}
arr2[] = {4, 17, 9, 3}
result[] = {2, 3, 4, 5, 7, 9, 10, 17}

アルゴリズム

1. Merge two unsorted array into new array
2. Sort newly create array

#include <iostream>
#include <algorithm>
#define SIZE(arr) (sizeof(arr) / sizeof(arr[0]))
using namespace std;
void mergeAndSort(int *arr1, int n1, int *arr2, int n2, int *result){
   merge(arr1, arr1 + n1, arr2, arr2 + n2, result);
   sort(result, result + n1 + n2);
}
void displayArray(int *arr, int n){
   for (int i = 0; i < n; ++i) {
      cout << arr[i] << " ";
   }
   cout << endl;
}
int main(){
   int arr1[] = {10, 5, 7, 2};
   int arr2[] = {4, 17, 9, 3};
   int result[SIZE(arr1) + SIZE(arr2)];
   cout << "First array: " << endl;
   displayArray(arr1, SIZE(arr1));
   cout << "Second array: " << endl;
   displayArray(arr1, SIZE(arr2));
   mergeAndSort(arr1, SIZE(arr1), arr2, SIZE(arr2), result);
   cout << "Merged and sorted array: " << endl;
   displayArray(result, SIZE(arr1) + SIZE(arr2));
   return 0;
}

出力

上記のプログラムをコンパイルして実行する場合。次の出力を生成します-

First array:
10 5 7 2
Second array:
10 5 7 2
Merged and sorted array:
2 3 4 5 7 9 10 17

  1. C++で関数に配列を渡す

    C ++では、配列全体を引数として関数に渡すことはできません。ただし、インデックスなしで配列の名前を指定することにより、配列へのポインタを渡すことができます。 1次元配列を関数の引数として渡したい場合は、次の3つの方法のいずれかで関数の仮パラメーターを宣言する必要があります。3つの宣言メソッドはすべて、整数ポインターが実行されることをコンパイラーに通知するため、同様の結果を生成します。受け取る必要があります。 方法-1 次のようなポインタとしての正式なパラメータ- void myFunction(int *param) {    .    . &nb

  2. C ++で配列を使用するにはどうすればよいですか?

    配列は、連続したメモリ位置に配置された同じタイプの一連の要素であり、一意の識別子にインデックスを追加することで個別に参照できます。 C ++で配列を使用するには、最初に配列を宣言する必要があります。たとえば、 int arr[10]; これにより、サイズ10のint型の配列が宣言されます。これにより、10個の整数を連続したメモリに格納できます。その要素のいずれかを参照するには、配列アクセス演算子を使用して、アクセスする要素のインデックスを指定する必要があります。 C ++配列のインデックスは0から始まります。したがって、配列arrには、インデックス0、1、2、... 9の要素が10個あります