C++での中央値の求め方

vector使う

要素の値でソートして中央の要素を返す
要素の数が偶数だったら中央2つの平均を返す

loat median(vector<float> v) {
    float size = v.size();
    vector<float> _v(v.size());
    copy(v.begin(), v.end(), back_inserter(_v));
    float tmp;
    for (int i = 0; i < size - 1; i++){
        for (int j = i + 1; j < size; j++) {
            if (_v[i] > _v[j]){
                tmp = _v[i];
                _v[i] = _v[j];
                _v[j] = tmp;
            }
        }
    }
    if (size % 2 == 1) {
        return _v[(size - 1) / 2];
    } else {
        return (_v[(size / 2) - 1] + _v[size / 2]) / 2;
    }
}