あおいろ日記の方に「median 日記」でぐぐって来られる方がちらほらいるので、これなら五分でかけそーとちょりっと書いてみました。
#書いてたPCにBoostが入ってなくてばっちり五分以上かかりました。
コレクションをソートしちゃうのでソート出来ないときは別の方法で何とかしてください。
適当に書いたら楽した分なんか色々インクルードすることになってしまいました。
#include <vector> // vector
#include <cstdlib> // srand, rand
#include <ctime> // time
#include <iostream> // cout
#include <algorithm> // for_each
#include <boost/lambda/lambda.hpp> // lambda
using namespace std;
using namespace boost::lambda;
#define ELEMENTS 10
int main(int argc, char* argv[])
{
vector<int> v(ELEMENTS);
// 準備
srand(time(NULL));
cout << "source: ";
for_each(v.begin(), v.end(), (_1 = rand(), cout << _1 << ", "));
cout << endl;
// medianを取る
sort(v.begin(), v.end()); // ソートして
vector<int>::size_type pivot = v.size() / 2;
int median = (pivot % 2)? v[pivot]: (v[pivot] + v[pivot + 1]) / 2;// 真ん中の値をとる
cout << "median: " << median << endl;
return 0;
}