在 C++ 中按排序順序合併兩個未排序陣列。


問題陳述

編寫一個函式,它接收兩個未排序的陣列,並將其合併到一個新的已排序陣列中。

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

更新於: 2019 年 10 月 31 日

375 次瀏覽

開啟您的 職業生涯

完成課程即可獲得認證

開始學習
廣告