在 C++ STL 中使用 std::merge() 快速合併兩個已排序陣列


在本文中,我們將討論如何使用 C++ STL 中的 std::merge() 函式快速合併兩個已排序陣列。

因此,在解決問題之前,讓我們首先討論 C++ STL 中的 std::merge()。

什麼是 std::merge()?

std::merge() 函式是 C++ STL 中的一個內建函式,它在 <algorithm> 標頭檔案中定義。merge() 用於合併兩個已排序範圍或序列。此函式將兩個已排序範圍組合為一個單一已排序範圍。所有元素都使用小於運算子 (<) 進行比較,因此第三個範圍也是按自身進行排序。

我們將如何使用 std::merge() 快速合併兩個已排序陣列?

給定兩個已排序陣列 arr1[] 和 arr2[],任務是使用 C++ STL 中提供的 merge() 函式合併這兩個已排序陣列,並將其儲存在另一個空陣列(即 arr3[])中。

  • 首先,我們將計算兩個陣列 arr[size_arr] 和 brr[size_brr] 的大小,並定義第三個陣列,其大小是兩個陣列大小之和 final[size_arr+size_brr]。

  • 然後,我們將兩個數組合併到第三個陣列中,使用 merge() 函式,如 merge(arr, (arr + size_arr), brr, (brr + size_brr), final);

示例

 即時演示

#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

更新於: 2020 年 4 月 17 日

1 千次以上的觀看+

啟動你的 職業生涯

完成課程以獲得認證

開始學習
廣告
© . All rights reserved.