C++常用算法merge

Posted YQ编程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++常用算法merge相关的知识,希望对你有一定的参考价值。

        merge是建立在归并操作上的一种有效的排序算法。它将多个排序列表作为输入并生成单个列表作为输出,包含按排序顺序排列的输入列表的所有元素。

        归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。

        将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路归并。

功能描述:

  • 两个容器元素合并,并存储到另一个容器中

函数原型:

  • merge(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest);

  • //容器元素合并,并存储到另一个容器中

  • //注意:两个容器必须是有序的

  • //beg1 容器1开始迭代器

  • //end1 容器1结束迭代器

  • //beg2 容器2开始迭代器

  • //end2 容器2结束迭代器

  • //dest 目标容器开始迭代器

代码示例:

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
void myPrint(int val){
cout << val << " ";
}
void test01(){
vector<int>v1;
vector<int>v2;
for (int i = 0; i < 10; i++)
{
v1.push_back(i);
v2.push_back(i + 1);
}
//目标容器
vector<int>vTarrget;
//提前给目标容器分配空间
vTarrget.resize(v1.size() + v2.size());
merge(v1.begin(), v1.end(), v2.begin(), v2.end(), vTarrget.begin());
for_each(vTarrget.begin(), vTarrget.end(), myPrint);
cout << endl;
}
int main(){
test01();
system("pause");
return 0;
}

总结:merge合并的两个容器必须是有序序列


以上是关于C++常用算法merge的主要内容,如果未能解决你的问题,请参考以下文章

C++提高编程C++全栈体系(二十七)

Python 和 C++ 下字符串查找速度对比,你觉得Python适合算法竞赛吗

算法竞赛常用C++头文件

常用编程思想与算法

c++ 容器含义

STL 常用方法