考虑以下函数,中位数:
real_t median(const std::initializer_list<real_t> vars) { real_t tmp[15]; const unsigned x = vars.size() / 2; if (x & 1) { std::partial_sort_copy(vars.begin(),vars.end(),&tmp[0],&tmp[x]); return tmp[x]; } const unsigned y = x + 1; std::partial_sort_copy(vars.begin(),&tmp[y]); return (tmp[x] + tmp[y]) / 2; }
我正在使用部分排序来降低复杂性,因为我只需要排序列表的一半.
此外,我假设std :: partial_sort_copy比std :: partial_sort或std :: nth_element更快,因为排序算法(It1!= It2)中没有必要的混洗.我的假设是否正确?
注意:假设real_t可能是双倍的,所以请不要批评使用除法.
NBB:我使用-pedantic和vars已知不超过15个元素.
解决方法
原文地址:https://www.jb51.cc/c/111705.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。