Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

รวมอาร์เรย์ที่จัดเรียงไว้สองชุดอย่างรวดเร็วโดยใช้ std::merge() ใน C ++ STL (cute ho ap)


ในบทความนี้ เราจะพูดถึงวิธีที่เราสามารถรวมอาร์เรย์ที่จัดเรียงไว้สองชุดเข้าด้วยกันอย่างรวดเร็วโดยใช้ฟังก์ชัน std::merge() ใน C++ STL

ดังนั้น ก่อนที่จะแก้ปัญหา เรามาพูดถึง std::merge() ใน C++ STL กันก่อน

std::merge() คืออะไร

std::merge() ฟังก์ชั่นเป็นฟังก์ชัน inbuilt ใน C++ STL ซึ่งกำหนดไว้ในไฟล์ส่วนหัว merge() ใช้เพื่อรวมช่วงหรือชุดข้อมูลที่จัดเรียงไว้สองชุด ฟังก์ชันนี้รวมช่วงที่จัดเรียงไว้สองช่วงเพื่อสร้างช่วงที่จัดเรียงไว้ช่วงเดียว องค์ประกอบทั้งหมดจะถูกเปรียบเทียบโดยใช้ตัวดำเนินการน้อยกว่า (<) ดังนั้นช่วงที่สามจึงถูกจัดเรียงด้วยตัวของมันเอง

เราจะรวมอาร์เรย์ที่จัดเรียงไว้สองชุดเข้าด้วยกันอย่างรวดเร็วโดยใช้ std::merge() ได้อย่างไร

เราได้รับอาร์เรย์ที่เรียงลำดับสองอันซึ่ง ได้แก่ arr1[] และ arr2[] และงานคือการรวมอาร์เรย์ที่เรียงลำดับทั้งสองนั้นและเก็บไว้ในอาร์เรย์ว่างอื่นซึ่งสามารถเป็น arr3[] โดยใช้ฟังก์ชัน merge() ที่มีอยู่ใน C ++ STL .

  • ขั้นแรก เราจะคำนวณขนาดของอาร์เรย์ทั้งสอง arr[size_arr] และ brr[size_brr] และกำหนดอาร์เรย์ที่สามที่มีขนาดเป็นผลรวมของขนาดของอาร์เรย์ทั้งสองสุดท้าย[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