partial_sort_copy是最快的C部分排序吗?
发布时间:2020-12-16 03:22:21 所属栏目:百科 来源:网络整理
导读:考虑以下函数,中位数: real_t median(const std::initializer_listreal_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 =
考虑以下函数,中位数:
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个元素. 解决方法
如果我可以选择,我会去一个部分Quicksort.
Info on Partial Quicksort 但是如果你必须比较这两个只是…那么部分排序更好vs部分排序副本.这里有更多关于这两种方法的信息: Info on Partial Sort Info on Partial Sort Copy 在这里,您还可以找到部分Quicksort的算法代码示例 – 它在C和matlab中实现: Example – Partial Quicksort (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |