找到没有排序的中间值

时间:2011-08-22 05:40:21

标签: java algorithm data-structures

  

可能重复:
  How to find the kth largest element in an unsorted array of length n in O(n)?

是否有任何算法可以在不执行排序操作的情况下查找给定列表的中间值。

例如,如果列表保持为堆栈并包含(1,2,5,3,4,6),则中间值应为4 所以我的问题是如何在不对列表执行排序操作的情况下获取此值。

这可能吗?

1 个答案:

答案 0 :(得分:3)

是的,有众所周知的算法可以找到列表的第k个最大元素。见How to find the kth largest element in an unsorted array of length n in O(n)?

此处k预先计算为length/2,如果列表中有偶数个元素,则调整为最接近的整数。