2009年12月27日

 あおいろ日記の方に「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;
}


posted @ 16:04 | Feedback (170)