gpt4 book ai didi

c++ - 从 vector 中提取最小值、最大值和中值的最有效方法是什么

转载 作者:IT老高 更新时间:2023-10-28 22:59:37 25 4
gpt4 key购买 nike

给定一个 vector<T> vec{...}假设 T 是数字类型之一,提取其最小值、最大值和中值的最佳方法是什么?我知道 std::nth_element 以及 std::minmax_element 但是如果一个接一个地调用,它们似乎会做多余的工作。

到目前为止,我想出的最好的想法是一次接一次地调用 std::nth_element 3 次。但这仍然需要 3N 比较,对吧?有没有办法重用之前迭代中完成的部分排序?

最佳答案

使用 std::nth_element 划分产生中位数,然后在左半部分使用 std::min_elementstd::max_element在右边。

如果您需要它比这更快,那么根据 std::nth_element 推出您自己的版本。

关于c++ - 从 vector 中提取最小值、最大值和中值的最有效方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56455819/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com