Computer >> Máy Tính >  >> Lập trình >> C ++

Nhanh chóng hợp nhất hai mảng đã sắp xếp bằng cách sử dụng std ::merge () trong C ++ STL (cute ho ap)

Trong bài viết này, chúng ta sẽ thảo luận về cách chúng ta có thể nhanh chóng hợp nhất hai mảng đã sắp xếp bằng cách sử dụng hàm std ::merge () trong C ++ STL.

Vì vậy, trước khi giải quyết vấn đề, trước tiên hãy thảo luận về std ::merge () trong C ++ STL.

std ::merge () là gì?

Hàm std ::merge () là một hàm có sẵn trong C ++ STL, được định nghĩa trong tệp tiêu đề . merge () được sử dụng để hợp nhất hai dải ô hoặc chuỗi đã được sắp xếp. Hàm này kết hợp hai phạm vi được sắp xếp để tạo thành một phạm vi được sắp xếp duy nhất. Tất cả các phần tử được so sánh bằng cách sử dụng toán tử nhỏ hơn (<), do đó, phạm vi thứ ba cũng được sắp xếp theo riêng của nó.

Làm thế nào chúng ta sẽ nhanh chóng hợp nhất hai mảng đã sắp xếp bằng cách sử dụng std ::merge ()?

Chúng ta được cung cấp hai mảng đã sắp xếp là arr1 [] và arr2 [] và nhiệm vụ là hợp nhất hai mảng đã sắp xếp đó và lưu trữ nó trong một mảng trống khác có thể là arr3 [], sử dụng hàm merge () có sẵn trong C ++ STL .

  • Đầu tiên, chúng tôi sẽ tính toán kích thước của cả hai mảng arr [size_arr] và brr [size_brr] và xác định mảng thứ ba có kích thước là tổng kích thước của cả hai mảng cuối cùng [size_arr + size_brr].

  • Sau đó, chúng tôi sẽ hợp nhất hai mảng thành mảng thứ ba bằng cách sử dụng hàm merge () như merge (arr, (arr + size_arr), brr, (brr + size_brr), final);

Ví dụ

#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;
}

Đầu ra

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