求中位数

原题:https://pintia.cn/problem-sets/15/problems/3001

题目要求:
求中位数
思路很简单,创建两个vector容器,将其中一个插入另一个,再将这个容器排序,输出中位数即可。
#include
#include
#include
using namespace std;

int mid(vector& v1, vector& v2, int m)
{
for (int i = 0; i < m; i++)
{
v1.push_back(v2[i]);
}
sort(v1.begin(), v1.end());
return (v1[m] + v1[m - 1]) / 2;
}

int main()
{
vectorv1;
vectorv2;
int m, n;
scanf_s("%d", &m);
for (int i = 0; i < m; i++)
{
scanf_s("%d", &n);
v1.push_back(n);
}
for (int i = 0; i < m; i++)
{
scanf_s("%d", &n);
v2.push_back(n);
}
printf("%d", mid(v1, v2, m));
}

这里用到了sort函数排序,这里的排序规则还可以自定义,并且对内置数据类型和自定义的数据类型都可以排序,可以自己制定排序规则,只需要写一个仿函数即可。
这几天学习了stl的函数对象知道了什么叫做仿函数,且仿函数分为算数仿函数,逻辑仿函数,关系仿函数。还有谓词,一元谓词和二元谓词。
也学习了一些简单的算法,如 遍历算法:for_each,transform,查找算法:find,find_if,adjacent_find,binary_search.学了stl容器我就感觉到了stl的便捷,比如学了vector我就很少用数组了,vector容器方便的多,还有一些算法可供使用。