查找 c++ 中值集合的中位数
我需要存储值的集合,然后能够计算其中值。
C++ 中存储这些值的最佳容器是什么?如何找到中位数?
(我可能还希望能够删除特定元素,所以我认为 set 可能不是最好的选择......)
Possible Duplicate:
Compute Median of Values Stored In Vector - C++?
I need to store a collection of values and then have the ability to calculate its median value.
What is the best container in c++ to store these values, and how do I find the median?
(I might also want to be able to remove specific elements, so I am thinking set may not be the best option...)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果没有任何其他特定要求,您应该默认为
std::vector
。您提到您想稍后删除项目;这意味着您可能需要考虑使用
std::list
。要查找中位数,可以使用
std::nth_element
,要求它以第N/2
(或(N-1)/2
)元素为中心。其运行时间为O(N)。Short of any other specific requirements, you should default to a
std::vector
. You mention that you want to remove items later; this implies that you may want to consider astd::list
instead.To find the median, you can use
std::nth_element
, asking it to pivot on theN/2
-th (or(N-1)/2
-th) element. This runs in O(N) time.