std::merge (tsz. std::merges)
std::merge
algoritmus a C++ STL (Standard Template Library) egyik fejlettebb algoritmusa, amely lehetővé teszi két rendezett tartomány összefésülését egy egyetlen rendezett tartományba.
std::merge(first1, last1, first2, last2, result);
first1
, last1
→ első tartomány kezdete és vége (iterátorok)first2
, last2
→ második tartomány kezdete és vége (iterátorok)result
→ az eredménytárolóba mutató kimeneti iterátor (pl. std::back_inserter
, vagy előre lefoglalt konténer iterátora)
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> first = {1, 3, 5, 7, 9};
std::vector<int> second = {2, 4, 6, 8, 10};
std::vector<int> result;
std::merge(first.begin(), first.end(), second.begin(), second.end(),
std::back_inserter(result));
std::cout << "Összefésült eredmény: ";
for (int num : result) {
std::cout << num << " ";
}
return 0;
}
Összefésült eredmény: 1 2 3 4 5 6 7 8 9 10
std::merge
pont ezt a lépést valósítja meg.
✅ Rendezett bemenetet vár → ha nem rendezett a két bemenet, az eredmény hibás lesz. ✅ Nem távolít el duplikált elemeket → ha azonos elemek vannak a bemenetekben, mindkettő bekerül. ✅ Az eredmény sorrendhelyes, vagyis az eredmény is növekvő (vagy ha fordított sorrendű bemenet, akkor annak megfelelő).
Tulajdonság | Részlet |
---|---|
Algoritmus neve | std::merge
|
Bemenet | 2 db rendezett tartomány |
Kimenet | 1 db rendezett tartomány |
Duplikátumok | Benne maradnak |
Használat | Merge sort, adatfésülés, adatösszevonás |
Időkomplexitás | O(n1 + n2) |