2017-01-28 58 views

回答

3

很不幸,你是對的。 SortedSet不提供獲取中位數的內置方式。這是因爲SortedSet的底層數據結構是紅黑樹。 (例如,參見維基百科上的Red-black tree

您是否可以使用其他類型的集合或它是否必須是SortedSet?否則,我建議將其轉換爲列表或數組,並通過訪問索引length+1/2處的奇數值length或元素length/2length/2 - 1的平均值來獲得O(1)時間的中位數。

+0

很好的答案。另外,我相信可以修改紅黑樹來跟蹤每個節點的總項目數,並且如果已知該計數,那麼通過O(log(n))中的索引訪問元素的信息就足夠了, ) 時間。 'SortedSet'不這樣做,但是一個自定義的實現可能非常適合OP。 – hvd

相關問題