查看https://msdn.microsoft.com/zh-cn/library/dd412070(v=vs.110).aspx上的文档,但我没有找到解决方法。理想情况下,我想能够找到的中位数(中量元素或两者中间的总和)SortedSet<int>
的O(log(n))
时间(很明显,我知道我能做到这一点在O(n)
通过转换为一个列表或数组时)。
好吧,不幸的是你是对的。SortedSet
没有提供获取中位数的内置方法。这是因为的基础数据结构SortedSet
是一棵红黑树。(例如,参见Wikipedia上的红黑树)
您是否可以使用其他种类的集合,或者它必须是SortedSet?否则,我建议将其转换为列表或数组,并通过访问index处的元素的Olength+1/2
的奇数值length
或元素length/2
and的平均值来获得O(1)时间的中值length/2 - 1
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句